Docker 守护进程日志在哪里?
Posted
技术标签:
【中文标题】Docker 守护进程日志在哪里?【英文标题】:Where is the Docker daemon log? 【发布时间】:2015-09-07 06:48:46 【问题描述】:奇怪的是,无法通过 man、*** 或 Docker Docs 找到答案。注意我不是要 docker 容器 STDOUT,而是要通过守护程序/代理对客户端和容器之间的通信进行故障排除的守护程序日志。
【问题讨论】:
官方名单在这里:docs.docker.com/config/daemon/#read-the-logs 【参考方案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/docker.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/docker.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/docker.log
没有日志文件
相反,我可以找到如下的日志文件。
进入虚拟机。
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
或 $ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
检查日志文件
/ # 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
【讨论】:
谢谢,日志的直接链接是docs.docker.com/config/daemon/#read-the-logs【参考方案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
【讨论】:
以上是关于Docker 守护进程日志在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
boot2docker / docker-machine / Docker Toolbox 上的 Docker 守护进程配置文件