Docker 系列(四十九):如何调试 Docker

排查 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

系列导航


   转载规则


《Docker 系列(四十九):如何调试 Docker》 由 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Docker 系列(五十):服务端命令 dockerd Docker 系列(五十):服务端命令 dockerd
dockerd 是 Docker 的服务端守护进程,负责镜像管理、容器的创建与运行,以及网络、存储等核心工作。一般情况下,dockerd 由系统的 systemd 服务(服务名通常为 docker)托管,无需手动启动;但在调试或定制配置时,
2023-07-25
下一篇 
Docker 系列(四十八):Dockerfile 最佳实践 Docker 系列(四十八):Dockerfile 最佳实践
本篇整理编写 Dockerfile 的一些最佳实践,帮助构建出更精简、更易维护的镜像。 一般性守则通过 Dockerfile 构建的镜像所启动的容器应该尽可能短暂(生命周期短)。「短暂」意味着可以停止和销毁容器,并且创建一个新容器并部署好所
2023-07-11
  目录