Docker有日志记录机制,可以用于在问题发生时进行调试。有守护进程级别和容器级别的日志记录。高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要。本文主要介绍Docker 日志记录及查看。

1、Docker 守护进程日志

在守护进程日志级别上,有四个级别的日志可用:

debug:详细描述了守护进程处理的所有可能的信息。

info:详细说明了守护进程处理的所有错误和信息。

errors :详细说明了守护进程处理的所有错误。

fatal:只详细说明了守护进程处理的所有致命错误。

启用日志的方法:

1)需要停止docker守护进程,如果它已经在运行。可以使用下面的命令来停止

sudo service docker stop 

或者

sudo systemctl stop docker

2)启动docker守护进程时,需要附加-l参数来指定日志记录选项

sudo dockerd -l debug &

注意:Dockerd是docker守护进程的可执行文件。选项-l用于指定日志级别。&用于启用日志记录后返回命令提示符。也就是后台运行。这样可以同一个终端执行任何Docker命令,例如,docker ps,debug信息也将被发送到终端控制台。如不使用&,也可以另外在打开终端执行docker命令,用之前的终端查看日志。

可以使用下面命令:

dockerd --log-level debug  

关闭命令:

killall dockerd

2、Docker 容器日志记录

在容器级别也可以使用日志记录。可以使用docker logs 命令查看,如下,

docker logs [选项] CONTAINER_ID 

选项:

CONTAINER_ID :需要查看进程信息的容器ID。可以使用docker ps -a命令查看。

--details :显示更多的信息

-f, --follow :跟踪实时日志

--since string :显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)

--tail string :从日志末尾显示多少行日志, 默认是all

-t, --timestamps :显示时间戳

--until string :显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

例如,

1)显示容器ID的日志

sudo docker logs 2e6e33c7d334

2)查看指定时间后的日志并显示50条

$ docker logs -f -t --since="2021-06-17" --tail=50 CONTAINER_ID

3)查看最近10分钟的日志

$ docker logs --since 10m CONTAINER_ID

4)查看某个时间后的日志

$ docker logs -t --since="2021-06-09T14:20:27" CONTAINER_ID

5)查看某时间段日志

$ docker logs -t --since="2021-06-09T14:00:00" --until "2021-06-09T15:00:00" CONTAINER_ID

3、Docker daemon日志的位置

Docker daemon日志的位置,不同的系统各不相同,如下:

Ubuntu/var/log/upstart/docker.log

Boot2Docker/var/log/docker.log

Debian GNU/Linux/var/log/daemon.log

CentOS/var/log/daemon.log | grep docker

Fedorajournalctl -u docker.service

Red Hat Enterprise Linux Server/var/log/messages | grep docker

推荐文档