要让 docker 守护进程以调试模式运行,需在 daemon.json 中设置 "debug": true 或使用 dockerd -d 参数启动,并通过 journalctl -u docker 查看日志;该模式输出大量内部操作信息,仅建议临时排障使用。
要让 docker 守护进程(dockerd)以调试模式运行并输出更详细的日志,核心是启用 debug 模式,并确保日志能被正确捕获和查看。这不是简单加个参数就完事,需配合配置方式、日志驱动和查看手段协同生效。
修改 daemon.json 启用 debug
编辑守护进程主配置文件 /etc/docker/daemon.json(若不存在可新建),添加 "debug": true 字段:
保存后重启守护进程:
sudo systemctl restart docker
注意:该配置会使 dockerd 输出大量内部操作日志(如 API 调用、网络握手、图层加载等),仅建议临时开启用于排障,不可长期启用。
通过启动参数启用调试(适用于调试启动问题)
当 dockerd 无法正常启动或 daemon.json 本身加载失败时,可绕过配置文件直接传参启动:
sudo dockerd -D --debug
其中 -D 和 --debug 等价,均表示启用调试模式。此时日志会直接输出到终端(前台运行),便于观察启动过程中的第一手错误信息。
若使用 systemd 管理,也可临时修改服务文件:
- 执行 sudo systemctl edit docker
- 添加覆盖配置:
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -D - 再执行 sudo systemctl daemon-reload && sudo systemctl restart docker
查看调试日志的正确方式
debug 日志默认由 systemd 或宿主机日志系统接管,不能只依赖 docker logs(那是查容器日志的):
- 使用 sudo journalctl -u docker -f 实时跟踪(推荐,尤其在 systemd 环境)
- 若日志被重定向到文件(如
/var/log/docker.log),确认daemon.json中未禁用log-driver,且文件路径有写入权限 - 避免用
tail -f /var/log/messages盲目搜索,因 dockerd 日志可能分散或被过滤;优先用journalctl -u docker --since "2 minutes ago"定向检索
配套建议:控制日志量与定位关键信息
debug 模式下日志爆炸式增长,需主动干预防止磁盘打满或干扰排查:
- 搭配
"log-level": "debug"(非必需,debug: true已隐含) - 限制 json-file 驱动的日志大小:
"max-size": "5m", "max-file": "2" - 排查特定问题时,可在 journalctl 中加关键词过滤:
sudo journalctl -u docker -f | grep -i "pull\|network\|overlay" - 遇到守护进程卡死,发送
SIGUSR1获取 goroutine 堆栈:
sudo kill -SIGUSR1 $(pidof dockerd),日志会输出到 journal 中











