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/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没有日志文件

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

    进入虚拟机。

    $ 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 守护进程日志在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS在windows下怎么启动守护进程

Docker 守护进程写入 syslog 但为啥

boot2docker / docker-machine / Docker Toolbox 上的 Docker 守护进程配置文件

无法连接到 Docker 守护程序。 docker 守护进程是不是在此主机上运行?

使用反向代理,实现快速配置重启 Docker 守护进程

linux 如何将守护进程的日志写到自己指定的日志文件