排查 Docker 相关问题时,一般可以从开启守护进程的调试日志入手,必要时还可以查看守护进程的运行时堆栈,或者在数据可以丢弃的情况下彻底重置本地数据。本篇介绍这几种常用的调试手段。
开启调试日志
在 dockerd 配置文件 daemon.json(默认位于 /etc/docker/)中添加:
{
"debug": true
}
重启守护进程使配置生效:
$ sudo kill -SIGHUP $(pidof dockerd)
此时 dockerd 会在日志中输出更多信息供分析。也可以在内核日志中检索与 Docker 相关的记录:
$ sudo dmesg | grep dockerd
$ sudo dmesg | grep runc
查看守护进程堆栈
可以通过向 dockerd 进程发送 SIGUSR1 信号来查看其堆栈调用情况:
$ sudo kill -SIGUSR1 $(pidof dockerd)
重置本地数据
如果需要彻底重置 Docker,可以删除其本地数据目录:
注意:本操作会移除所有的 Docker 本地数据,包括镜像和容器等。
$ sudo rm -rf /var/lib/docker