docker logs-查看docker容器日志的实现

通过docker logs命令可以查看容器的日志。

命令格式:

$ docker logs [OPTIONS] CONTAINER
 Options:
    --details    显示更多的信息
  -f, --follow     跟踪实时日志
    --since string  显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
    --tail string  从日志末尾显示多少行日志, 默认是all
  -t, --timestamps   显示时间戳
    --until string  显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

例子:

查看指定时间后的日志,只显示最后100行:

$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

查看最近30分钟的日志:

$ docker logs --since 30m CONTAINER_ID

查看某时间之后的日志:

$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

查看某时间段日志:

$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

补充:Docker容器的调试技巧:docker logs 与 docker service logs

调试容器

不少刚接触Docker的同学,通常面对docker容器起不来,或者一直在重复启动中不知措施。

docker提供了一系列简单命令,很容易调试容器运行中的问题。

原理很简单,就是可以直接输出容器运行时(或过去式的)的日志。

通常有4种方式:

docker run (控制台上启动容器)

docker exec (附加进入后台容器)

docker logs

docker service logs

下面依次介绍之

控制台启动容器

打个比如调试启动redis容器

docker run -it -rm redis redis-server [redis 启动参数略...]

这样redis-server的日志输出直接打印到控制台上

缺点是,这种方式仅供启动容器调试时使用,无法操作后台运行中的容器,或已失效的容器。

docker exec 附加进入后台容器

有时候需要进入容器内,查看系统运行状况。这时候可以使用docker exec。

使用docker exec的前提是容器在运行中。因此当容器不能正常工作时,往往无法使用该命令

docker logs

实际上docker容器不管处于什么状态,都可以使用docker logs获取 容器的所有日志。

docker logs [容器名]

docker logs还有局限性,即无法获取docker swarm模式下,启动失败的容器日志

docker service logs

针对docker swarm模式,获取容器日志的命令。

一般,依次执行下列命令,得到某服务的容器名

docker service ls
docker service ps [服务名]

然后就可以通过容器名,获取其日志了

docker service logs [容器名]

docker service logs显示日志为空

要让 docker service logs 正常工作,需要设置docker一些配置

vi /etc/docker/daemon.json

给该文件添加:

{
  "log-driver": "json-file",
  "log-opts": {
    "labels": "production_status,geo",
    "env": "os,customer"
  }
}

然后重启docker

service docker restart

关于docker service logs的详细介绍,可以参考官方文档

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • docker空间爆满导致的进入容器失败的解决方案

    由于问题发生的比较突然,业务催的比较急,所以没来得及截图案发现场,所以现场截图为后期正常的环境. 周一上班,照例进入服务器,进入docker容器 >>> docker exec -i -t xxx /bin/bash Docker error : no space left on device 没空间了? 立马想到查看系统的空间 >>> df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.9G 0 3.

  • docker 查看容器的挂载目录操作

    只显示Docker容器挂载目录信息 docker inspect --format "{{.Config.Volumes}}" 369a1376f78c 显示Docker容器和物理主机挂载目录信息 方法一 docker inspect -f "{{.Mounts}}" 369a1376f78c 方法二 docker inspect 369a1376f78c | grep Mounts -A 50 补充:Docker 显示某个容器所有的挂载目录 docker insp

  • docker 容器自定义 hosts 网络访问操作

    在 docker-compose.yml 中增加 extra_hosts 关键字就可以将数据写入到容器的 /etc/hosts. extra_hosts 添加主机名映射. extra_hosts: "somehost:162.242.195.82" "otherhost:50.31.209.229" 将会在/etc/hosts创建记录: 162.242.195.82 somehost 50.31.209.229 otherhost 注意: 如果指向的是本机,不要写容

  • 浅谈Docker run 容器处于created状态问题

    在最近遇到的一次问题中,有这样一种现象: 系统有一个测试脚本会不断的执行docker run命令来运行容器,在测试过程中发现有一个情况是,有时候容器没有完全被运行到"Up"状态,而是处于"created"状 态,现象十分奇怪. 上环境首先查看了"created"状态的容器,以及dockerd日志: (1) dockerd的日志中只有"post create"请求,但是居然没有收到该容器的"post start&quo

  • 解决docker容器重启之后/etc下某些配置文件被重置的问题

    1. /etc/hosts, /etc/resolv.conf和/etc/hostname容器中的这三个文件不存在于镜像,而是存在于于/var/lib/docker/containers/,在启动容器的时候,通过mount的形式将这些文件挂载到容器内部. 因此,如果在容器中修改这些文件的话,修改部分不会存在于容器的top layer,而是直接写入这三个物理文件中. 2.为什么重启后修改内容不存在了? 原因是:每次Docker在启动容器的时候,通过重新构建新的/etc/hosts文件,这又是为什么

  • Docker容器迁移到其他服务器的5种方法详解

    迁移在许多情况下都是不可避免的.硬件升级.数据中心变化.过时的操作系统,所有这些都可能成为迁移的触发点. Docker容器迁移通常是迁移任务的一部分.今天我们将看到将Docker容器从现有服务器迁移到另一台服务器的不同方法. 如何将Docker容器迁移到另一台服务器,没有直接将Docker容器从一台服务器迁移到另一台服务器的方法,我们通过使用下面这些方法中的一个或多个来解决Docker容器迁移的问题. 1.导出和导入容器 导出容器意味着从容器的文件系统创建压缩文件,导出的文件保存为"gzip&q

  • docker logs-查看docker容器日志的实现

    通过docker logs命令可以查看容器的日志. 命令格式: $ docker logs [OPTIONS] CONTAINER Options: --details 显示更多的信息 -f, --follow 跟踪实时日志 --since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟) --tail string 从日志末尾显示多少行日志, 默认是all -t, --timestamps 显示时间戳 --until string 显示自某个timest

  • Docker部署ELK7.3.0日志收集服务最佳实践

    写在最前面 本文仅包含ELK7.3.0部署! 部署环境: 系统 CentOS 7 Docker Docker version 19.03.5 CPU 2核 内存 2.5G 磁盘 30G(推荐设置,磁盘不足可能会引发es报错) Filebeat v7.3.0,单节点 ElasticSearch v7.3.0,两份片 Kibana v7.3.0,单节点 Logstash v7.3.1,单节点 ELK分布式集群部署方案 linux中elasticsearch用户拥有的内存权限太小,至少需要262144

  • Docker容器日志查看与清理的方法(亲测有效)

    1. 问题 docker容器日志导致主机磁盘空间满了.docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了. 2. 解决方法 2.1 找出Docker容器日志 在linux上,容器日志一般存放在/var/lib/docker/containers/container_id/下面, 以json.log结尾的文件(业务日志)很大,查看各个日志文件大小的脚本docker_log_size.sh,内容如下: #!/bin/sh echo "====

  • docker 查看容器日志命令的实现

    为什么要看日志?比如启动容器失败,却不给出任何提示,这时候我们就需要查看下到底是为什么? 查看日志: 命令格式: $ docker logs [OPTIONS] CONTAINER Options: --details 显示更多的信息 -f, --follow 跟踪实时日志 --since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟) --tail string 从日志末尾显示多少行日志, 默认是all -t, --timestamps 显示时间戳 -

  • Docker 容器日志分析

    查看容器日志 先使用  docker run -it --rm -d -p 80:80 nginx:1.15.8-alpine 命令启动一个nginx容器.如果没有异常,会得到容器ID如  d2408a7931c95a3a83ffeca2fba887763cf925a67890ef3be4d9ff838aa25b00  的长串.再使用  curl -i http://127.0.0.1  访问服务,确认nginx容器正常启动运行.最后使用  docker logs -f d24  查看容器的日志

  • Docker容器 日志中文乱码问题解决办法

    Docker容器 日志中文乱码问题解决办法 1. 找到dockerfile文件, 如 /use/local/src/Docker/Dockerfile 2. 编辑Dockerfile 添加 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 3. 生成新的镜像文件 docker build -t centos7 . 4. 使用docker images查看新生成的镜像 5. 使用新的镜像启动容器 docker run

  • Docker学习笔记之容器查看启动终止删除的方法

    本文介绍了Docker学习笔记之容器查看启动终止删除的方法,分享给大家,具体如下: 查看 docker ps 主要有些参数要说一下 1. 不加参数,表示查看当前正在运行的容器 2. -a,查看所有容器包括停止状态的容器 3. -l,查看最新创建的容器 4. -n=x,查看最后创建的x个容器 列一下docker ps的结果 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 这些分别代表什么 CONTAINER ID:容器ID,唯一标识容器

  • 详解如何查看 docker 容器使用的资源

    在容器的使用过程中,如果能及时的掌握容器使用的系统资源,无论对开发还是运维工作都是非常有益的.幸运的是 docker 自己就提供了这样的命令:docker stats. 默认输出 docker stats 命令用来显示容器使用的系统资源.不带任何选项执行 docker stats 命令: $ docker stats 默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c.下面是输出的主要内容: [CONTAINER]:以短格式显示容器的 ID. [CPU %

  • 查看Docker容器的信息的方法实现

    目录 创建tomcat容器 第一种:进入容器内部获取信息 第二种:执行docker exec命令 第三种:使用docker inspect命令 对于运行在Docker环境的容器,有时我们想查询它们的一些基本信息,例如环境变量.hostname.ip地址等,接下来我们以一个tomcat容器为例,看看有哪些方式来取得这些信息: 创建tomcat容器 在docker环境下执行如下命令,即可创建一个名为tomcat001的tomcat容器: docker run --name tomcat001 -id

  • Docker中Dockerfile之容器中运行MyEclipse搭建的JavaWeb项目

    这篇文章将讲述如何将上一篇文章中的Javaweb项目制作成Docker的镜像.小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 应用程序在Docker容器中运行和在物理机运行的原理是一样的,所以我们部署这个Javaweb项目到Docker中的步骤应该如下: 服务器支持(这里选择Centos7) 安装Java环境 安装Tomcat环境 将Tomcat根目录下的webapps/ROOT目录下的所有文件(夹)删除 将自己开发的web项目的WebRoot目录下的所有文件(夹)复

随机推荐