Docker守护进程日志文件存储在哪里?

473

Docker守护程序日志在哪里?奇怪的是无法通过man手册、StackOverflow或Docker文档找到答案。请注意,我不是在寻求docker容器的STDOUT,而是守护程序/代理通过客户端和容器进行通信时出现问题时的守护程序日志。


10
官方列表在这里:https://docs.docker.com/config/daemon/#read-the-logs - wisbucky
14个回答

791

这取决于您的操作系统:https://docs.docker.com/config/daemon/logs/

下面是几个位置和一些操作系统的命令:

  • Ubuntu (旧版使用 upstart ) - /var/log/upstart/docker.log
  • Ubuntu (新版使用 systemd ) - sudo journalctl -fu docker.service
  • Amazon Linux AMI - /var/log/docker
  • Boot2Docker - /var/log/docker.log
  • Debian GNU/Linux - /var/log/daemon.log
  • CentOS - cat /var/log/message | grep docker
  • CoreOS - journalctl -u docker.service
  • Fedora - journalctl -u docker.service
  • Red Hat Enterprise Linux Server - /var/log/messages | grep docker
  • OpenSuSE - journalctl -u docker.service
  • macOS - ~/Library/Containers/com.docker.docker/Data/log/vm/d‌ocker.log
  • Windows - Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time,如此处所述。

如果您在守护进程模式下使用syslog驱动程序,那么您的STDOUT日志也会在这里。 - Ganesh Hegde
1
@Thomasleveil提供的链接已经失效。我认为等价的链接应该在这里https://docs.docker.com/engine/reference/commandline/dockerd/。 - Adam Mazzarella
1
docker-machine:使用 docker-machine ssh $host tail -f /var/lib/boot2docker/log/docker.log 命令。 (docker-machine 版本 0.16.1,构建 cce350d7) - Claudio
2
Alpine Linux 也使用 /var/log/docker.log - Granger
1
对于Amazon Linux 2,请使用sudo journalctl -fu docker.service - Sarang
显示剩余3条评论

123

如果你的操作系统使用了 systemd,那么你可以使用以下命令查看docker守护进程的日志:

sudo journalctl -fu docker.service

这显示了Docker容器的输出,有没有办法过滤掉它们,只显示dockerd日志? - docwhat
5
@TheDoctorWhat,这可能是因为你将 journald 设置为你的日志驱动程序。从 https://github.com/docker/docker/issues/23339#issuecomment-224275072 可以看出,你可以使用 journalctl -fu docker _TRANSPORT=stdout + OBJECT_EXE=docker 来过滤容器相关内容并只保留守护进程日志(在我这里有效)。 - Ciro Costa

29

在使用CentOS 7.x或8.x时,可使用命令journalctl -u docker来查看日志。需要指出的是,@sabin的答案可能适用于旧版本的CentOS,但对我来说不正确。

systemd有自己的日志记录系统,称为journal。可以使用journalctl -u docker命令查看docker守护进程的日志。

参考: https://docs.docker.com/engine/admin/configuring/


14

在我的环境下(docker for mac 17.07),没有日志文件位于~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/docker.log

相反,我可以在以下位置找到日志文件:

  1. 进入VM。

    $ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

    $ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

  2. 检查日志文件

    / # tail -f /var/log/docker.log


12
对于使用 Docker Mac Native(没有 Boot2Docker 或 docker-machine,在没有额外 VirtualBox 的情况下运行 Docker 安装 - 我建议使用这种方法),对我来说所有的答案都不起作用。不过,Docker 文档 幸运地拯救了我。
如果想在命令行上查看 Docker 守护进程日志,只需输入:
syslog -k Sender Docker

或者,从Mac OS Sierra开始,您可以使用全新设计的Mac控制台应用程序(不要与“终端”应用程序混淆,控制台应用程序的图标看起来非常相似 - 我在启动台下方的“其他”中找到了它)。这里有一篇文章描述了新的Mac OS Sierra控制台应用程序的通用用法,这些内容尚未包含在官方Docker文档中。

在控制台应用程序中,只需选择system.log并在搜索栏中键入Docker即可。就是这样。现在您应该能看到所有与Docker相关的日志。


9

Mac版Docker(测试版)

~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/docker.log


7

对于带有Docker Toolbox的Mac,首先使用docker-machine ssh %VM-NAME%登录到虚拟机,然后检查/var/log/docker.log


3
Mac OSX下Docker日志文件的位置已经发生改变,现在存储在~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/console-ring中。
详见Docker Daemon 文档

1
谢谢,日志的直接链接是 https://docs.docker.com/config/daemon/#read-the-logs - cgseller

0

你也可以通过以下命令查看日志:

docker service ps --no-trunc {serviceName}

这个命令揭示了部署我的一个图像的问题! - MingMan
1
这些是在Swarm模式下运行的容器的日志,而不是dockerd守护程序的日志。 - BMitch

0

我在 Manjaro 20/Arch Linux 下找不到日志。相反,我只是停止了 Docker 守护进程并使用 $ sudo dockerd -D 命令以 调试模式 重新启动守护进程以生成日志。很遗憾,官方的 Docker 文档没有为 Arch 提供此信息。
这不仅适用于 Arch,而且适用于其他系统。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接