1. docker logs

1.1. 描述

docker logs 命令获取容器标准输出信息,一般是容器的日志。

docker 的日志输出位置

  • STDOUT 标准输出
  • STDERR 标准错误
  • 以 json 格式存放在容器对于到日志文件中
  • 使用 volume 挂载到本地存储或其他存储

查看容器日志文件的生命周期是跟随容器而产生的,如果删除了某个容器,相应的日志文件也会随着被删除,除非通过 volume 挂载到外部存储。

当我们输入 ocker logs 的时候会转化为 Docker Client 向 Docker Daemon 发起请求, Docker Daemon 在运行容器时会去创建一个协程(goroutine),绑定了整个容器内所有进程的标准输出文件描述符。因此容器内应用的所有只要是标准输出日志,都会被 goroutine 接收,Docker Daemon 会根据容器 ID 和日志类型读取日志内容,最终默认会输出到用户终端上并且通过 json 格式存放在 /var/lib/docker/containers 目录下。

1.2. 帮助

$ docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
      --details Show extra details provided to logs
  -f, --follow Follow log output
      --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)
      --tail string Number of lines to show from the end of the logs (default "all")
  -t, --timestamps Show timestamps
      --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37) or relative (e.g. 42m for 42 minutes)

1.3. 选项

选项 默认值 描述
--details - 显示更详细的信息
-f, --follow - 实时跟踪容器的 output 日志输出
--since string - 显示自某个 timestamp 之后的日志(e.g. 2013-01-02T13:23:37),或相对时间,(e.g. 42m for 42 minutes)
--tail string all 从日志末尾显示多少行日志, 默认是 all
-t, --timestamps - 显示时间戳
--until string - 显示自某个timestamp之前的日志 (e.g. 2013-01-02T13:23:37) ,或相对时间(e.g. 42m for 42 minutes)

1.4. 示例

  • 显示容器的日志

在使用 docker logs 直接查看时,会一次性在输出所有的日志文件,输出完成后退出

例如:

docker logs CONTAINER_ID
...
2020-02-12T22:34:28.798+08:00 [ERROR] plugin/errors: 2 135.193.189.206.in-addr.arpa. PTR: read udp 172.17.32.2:50864->10.197.26.241:53: i/o timeout
2020-02-13T06:48:26.521+08:00 [ERROR] plugin/errors: 2 187.238.194.1.in-addr.arpa. PTR: read udp 172.17.32.2:34395->10.197.26.240:53: i/o timeout
2020-02-13T16:12:58.103+08:00 [ERROR] plugin/errors: 2 1.123.57.103.in-addr.arpa. PTR: read udp 172.17.32.2:57114->10.197.26.240:53: i/o timeout
  • 查看日志并显示时间戳
docker logs -t CONTAINER_ID
2020-02-12T22:48:26.521956414Z 2020-02-13T06:48:26.521+08:00 [ERROR] plugin/errors: 2 187.238.194.1.in-addr.arpa. PTR: read udp 172.17.32.2:34395->10.197.26.240:53: i/o timeout
2020-02-13T08:12:58.103664842Z 2020-02-13T16:12:58.103+08:00 [ERROR] plugin/errors: 2 1.123.57.103.in-addr.arpa. PTR: read udp 172.17.32.2:57114->10.197.26.240:53: i/o timeout
  • 实时跟踪容器的output日志输出

实时跟踪容器的output日志输出,直到容器退出或手动 Ctrl + C 终止

docker logs -f CONTAINER_ID
2020-02-13T06:48:26.521+08:00 [ERROR] plugin/errors: 2 187.238.194.1.in-addr.arpa. PTR: read udp 172.17.32.2:34395->10.197.26.240:53: i/o timeout
2020-02-13T16:12:58.103+08:00 [ERROR] plugin/errors: 2 1.123.57.103.in-addr.arpa. PTR: read udp 172.17.32.2:57114->10.197.26.240:53: i/o timeout
^C
  • 只显示最后几行日志
[root@ceph0 ~]# docker logs --tail 3 CONTAINER_ID
2020-02-14T03:50:13.758+08:00 [ERROR] plugin/errors: 2 raw.githubusercontent.com. A: read udp 172.17.32.2:49923->10.197.26.241:53: i/o timeout
2020-02-14T06:35:17.803+08:00 [ERROR] plugin/errors: 2 7.17.232.49.in-addr.arpa. PTR: read udp 172.17.32.2:48518->10.197.26.240:53: i/o timeout
2020-02-14T08:10:13.755+08:00 [ERROR] plugin/errors: 2 raw.githubusercontent.com. A: read udp 172.17.32.2:34327->10.197.26.241:53: i/o timeout
You have mail in /var/spool/mail/root
  • 只显示最后3条的日志,并持续更新日志显示
[root@ceph0 ~]# docker logs -f --tail 3 CONTAINER_ID
2020-02-14T03:50:13.758+08:00 [ERROR] plugin/errors: 2 raw.githubusercontent.com. A: read udp 172.17.32.2:49923->10.197.26.241:53: i/o timeout
2020-02-14T06:35:17.803+08:00 [ERROR] plugin/errors: 2 7.17.232.49.in-addr.arpa. PTR: read udp 172.17.32.2:48518->10.197.26.240:53: i/o timeout
2020-02-14T08:10:13.755+08:00 [ERROR] plugin/errors: 2 raw.githubusercontent.com. A: read udp 172.17.32.2:34327->10.197.26.241:53: i/o timeout
^C

查看最近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
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2022-03-13 11:28:02

results matching ""

    No results matching ""