【问题标题】:Where is the Docker daemon log?Docker 守护进程日志在哪里?
【发布时间】:2023-09-11 10:33:02
【问题描述】:

Docker 守护进程日志在哪里?奇怪的是,无法通过 man、* 或 Docker Docs 找到答案。注意我不是要 docker 容器 STDOUT,而是要通过守护程序/代理对客户端和容器之间的通信进行故障排除的守护程序日志。

【问题讨论】:

标签: logging docker


【解决方案1】:

这取决于您的操作系统。以下是几个位置,其中包含适用于少数操作系统的命令:

  • Ubuntu(旧使用新贵)-/var/log/upstart/docker.log
  • Ubuntu (新使用 systemd ) - sudo journalctl -fu docker.service
  • 亚马逊 Linux AMI - /var/log/docker
  • Boot2Docker - /var/log/docker.log
  • Debian GNU/Linux - /var/log/daemon.log
  • CentOS - /var/log/message | grep docker
  • CoreOS - journalctl -u docker.service
  • Fedora - journalctl -u docker.service
  • 红帽企业 Linux 服务器 - /var/log/messages | grep docker
  • OpenSuSE - journalctl -u docker.service
  • OSX - ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log
  • Windows - Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time,如上所述 here

【讨论】:

  • 如果您在守护程序模式下使用 syslog 驱动程序,这也是您的 STDOUT 日志所在的位置。
  • 我相信 1.13 移动了 OSX 位置,但我找不到任何相关文档。
  • 来自@Thomasleveil 的链接不再有效。我相信等效的链接会在这里docs.docker.com/engine/reference/commandline/dockerd
  • docker-machine:使用docker-machine ssh $host tail -f /var/lib/boot2docker/log/docker.log。 (docker-machine version 0.16.1, build cce350d7)
  • Alpine Linux 也使用/var/log/docker.log
【解决方案2】:

如果您的操作系统使用systemd,那么您可以使用以下命令查看 docker daemon 日志:

sudo journalctl -fu docker.service

【讨论】:

  • 这也显示了 docker 容器的输出......有没有办法过滤掉那些只显示 dockerd 日志?
  • @TheDoctorWhat ,这可能是因为您将 journald 设置为日志记录驱动程序。从github.com/docker/docker/issues/23339#issuecomment-224275072,您可以使用journalctl -fu docker _TRANSPORT=stdout + OBJECT_EXE=docker 过滤容器内容并仅保留守护程序日志(在这里工作正常)
【解决方案3】:

使用 CentOS 7.x 或 8.x,可以使用命令 journalctl -u docker 获取日志。清楚地回答,因为@sabin 的回答对于旧版本的 CentOS 可能是准确的,但对我来说并不正确。

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

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

【讨论】:

    【解决方案4】:

    对于带有 Docker Toolbox 的 Mac,首先使用 docker-machine ssh %VM-NAME% SSH 进入 VM,然后检查 /var/log/docker.log

    【讨论】:

      【解决方案5】:

      Docker for Mac(测试版)

      ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log

      【讨论】:

        【解决方案6】:

        对于 Docker Mac Native(没有 Boot2Docker 或 docker-machine,无需额外的 VirtualBox 即可运行 Docker 安装 - 我会推荐其他人),所有答案都不适用于我。但幸运的是Docker docs 来救援了。

        如果您想在命令行中查看 docker 守护进程日志,只需键入:

        syslog -k Sender Docker
        

        或者从 Mac OS Sierra 开始,您可以使用新设计的 Mac 控制台应用程序(不要在这里与应用程序“终端”混淆,控制台应用程序的图标看起来非常相似 -我在“其他..”下方的 Launchpad 中找到了它)。有一个 article here 描述了新的 Mac OS Sierra 控制台应用程序的一般用法,它还没有进入官方 Docker 文档。

        在控制台应用程序中,只需选择 system.log 并在搜索栏中输入Docker。而已。现在您应该会看到所有与 Docker 相关的日志。

        【讨论】:

          【解决方案7】:

          添加在windows中查找docker daemon log的方法:

          try

          在 Windows 和 Mac OSX 上使用 docker 机器时,守护程序在虚拟机中运行。

          首先,找到您的活动 Docker 机器。

          码头机器 ls 在输出中的 NAME 列下找到活动 docker 机器的名称。

          您可以将 docker daemon 日志文件复制到本地目录进行分析:

          docker-machine scp 默认:/var/log/docker.log ./ 其中 default 是您的 docker 机器的活动名称。

          【讨论】:

            【解决方案8】:

            在我的环境中(docker for mac 17.07),~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/log/d‌​ocker.log没有日志文件

            相反,我可以找到如下的日志文件。

            1. 进入虚拟机。

              $ 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

            【讨论】:

              【解决方案9】:

              Mac OSX 的 docker 日志位置已更改为 ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/console-ring

              Docker Daemon Documentation

              【讨论】:

              【解决方案10】:

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

              docker service ps --no-trunc {serviceName}
              

              【讨论】:

              • 这个命令揭示了部署我的一张图片的问题!
              【解决方案11】:

              以下解决方案在 Ubuntu 20.04 中对我有用

              日志存储在:/var/lib/docker/containers/<container id>/<container id>-json.log

              要知道容器 ID:$ docker ps

              【讨论】:

              • 问题不在于 docker 容器日志,而在于 docker 守护进程日志。
              【解决方案12】:

              我无法在 Manjaro 20/Arch Linux 下找到日志。相反,我只是停止了 docker 守护进程并使用$ sudo dockerd -D 重新启动了debug mode 中的守护进程以生成日志。不幸的是,官方 Docker 文档没有为 Arch 提供这些信息。
              这不仅适用于 Arch,也适用于其他系统。

              【讨论】:

                【解决方案13】:

                docker 容器日志 --details container_id

                示例:docker 容器日志 --details fsd96b784eacc

                【讨论】: