Docker 守护进程(dockerd)的日志在哪里查看?
Docker 守护进程日志位置因系统而异:systemd 系统用 journalctl -u docker.service;非 systemd 查看 /var/log/docker.log 或 /var/log/messages。本文覆盖各系统的查看方法。
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)
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
}
改完重启 Docker:sudo systemctl restart docker。调试守护进程问题时可临时设 "debug": true。
区分两种"Docker 日志"
- 守护进程日志:dockerd 自身的运行日志(拉镜像、网络、存储驱动等),就是本文内容;
- 容器日志:每个容器内应用的 stdout/stderr,用
docker logs <容器>查看,存储在/var/lib/docker/containers/*/下。
观测云对照
容器日志(应用的 stdout/stderr)由观测云 DataKit 自动采集到平台,支持全文检索和告警,不需要到每台机器上翻文件;Docker 守护进程日志可通过 DataKit 的日志文件采集或 journald 采集一并收集。
常见问题(FAQ)
Q:journalctl 里 docker 日志太多怎么过滤?
A:journalctl -u docker.service --since "1 hour ago" 按时间过滤;-p err 只看错误级别。
Q:容器日志文件在哪?
A:默认在 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log,是 JSON 格式,由 Docker 的 json-file 日志驱动管理。
Q:容器日志太占磁盘怎么办?
A:在 daemon.json 中配置 "log-opts": {"max-size": "10m", "max-file": "3"} 限制单个日志文件大小和保留数量;采集到观测云后也可以更早清理本地文件。