Docker 守护进程(dockerd)的日志在哪里查看?

Docker 守护进程日志位置因系统而异:systemd 系统用 journalctl -u docker.service;非 systemd 查看 /var/log/docker.log 或 /var/log/messages。本文覆盖各系统的查看方法。

最佳实践
Docker 守护进程(dockerd)的日志在哪里查看?封面

systemd 系统(大多数现代 Linux):用 journalctl -u docker.service 查看。非 systemd 系统:日志在 /var/log/docker.log 或混在 /var/log/messages / /var/log/syslog 中。

各系统的查看方法

# Linux (systemd,最常见)
journalctl -u docker.service -n 100    # 最近 100 行
journalctl -u docker.service -f        # 实时跟踪

# Linux (非 systemd)
tail -n 100 /var/log/docker.log
tail -n 100 /var/log/messages

# macOS (Docker Desktop)
# macOS unified log 主要反映宿主 Docker Desktop 进程,不等于 VM 内 dockerd 全部日志
log show --predicate 'process == "Docker"' --last 1h
# 或查看 ~/Library/Containers/com.docker.docker/Data/log/

# Windows (Docker Desktop)
# 日志在 %LOCALAPPDATA%\Docker\log\

自定义守护进程日志配置

编辑 /etc/docker/daemon.json:

{
  "log-level": "info",
  "debug": false
}

rootless 部署应检查用户级 docker 服务与用户配置目录。部分守护进程选项支持 reload,其他需重启;按具体版本核查并评估容器影响。需重启时:sudo systemctl restart docker。调试守护进程问题时可临时设 "debug": true。

区分两种"Docker 日志"

  • 守护进程日志:dockerd 自身的运行日志(拉镜像、网络、存储驱动等),就是本文内容;
  • 容器日志:每个容器内应用的 stdout/stderr,用 docker logs <容器> 查看,存储位置取决于日志驱动、data-root 和运行方式,不一定在该目录。

集中收集时也要区分这两种来源。守护进程日志已经输出到文件的主机,可按 DataKit 日志采集指南配置该路径,并用该版本确实会记录的已知守护进程事件验证采集,不能保证每次拉镜像都有预期记录;容器应用日志有数据,并不代表 dockerd 日志也已收齐。

常见问题(FAQ)

Q:journalctl 里 docker 日志太多怎么过滤?
A:journalctl -u docker.service --since "1 hour ago" 按时间过滤;-p err 按 journal PRIORITY 过滤;dockerd 消息中的 level=error 文本不保证映射为对应 journal 优先级。

Q:容器日志文件在哪?
A:仅在常规Linux默认data-root且使用json-file驱动时通常在 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log,是 JSON 格式,由 Docker 的 json-file 日志驱动管理。

Q:容器日志太占磁盘怎么办?
A:在 daemon.json 中配置 "log-opts": {"max-size": "10m", "max-file": "3"} 对json-file驱动设置单文件大小和保留数量;守护进程默认变更通常只影响新建容器,已有容器需重新创建。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台