Files
docker_practice/appendix/debug.md
T
yeasy ef2625531d style: 含中文的括号统一为全角(336 处 / 110 文件)
全书此前是真·五五开:含中文的括号 336 处半角 : 336 处全角,而且**在同一文件
内混用**——`18_security/18.1_kernel_ns.md` 第 11/17/20 行写 `(如 runC)`,
第 31 行写 `(用户命名空间映射)`。这不是体例问题,是它自己跟自己不一致。

集群里其余 13 本都一边倒(llm_internals 5 : 1049、oc_guide 2 : 713、
forward_deployed_engineering_guide 0 : 108),blockchain_guide 已在 2026-08-05
按同一方向统一过 97 处,故取全角,而非另立新规。全角括号前后不留空格,
原先 `概念 (镜像、容器、仓库) 和` 两侧的空格一并收掉。

**纯拉丁内容的半角括号一个没动**——`新建一个层 (Layer)`、`项目 (project)`
保持原样:改动前后「半角且内容纯拉丁」的数量都是 **1163**,而「半角且含中文」
从 **336 变成 0**。

其余验证:改动前后各自抹掉全部空白与圆括号后**逐字节相同**(两侧均 19559 字符);
左右括号总数改动前后都是 399 : 399,证明没有吞括号也没有配错对。
`check_project_rules` 202/202、`check_emphasis` 202/202、37 tests OK、
根 `format_checker` 与 `validate_codeblocks` 干净、`git diff --check` 干净。
2026-08-24 13:13:23 -07:00

2.5 KiB
Raw Blame History

附录五:如何调试 Docker

开启 Debug 模式

在 dockerd 配置文件 daemon.json(默认位于 /etc/docker/)中添加

{
  "debug": true
}

重启守护进程。

$ sudo kill -SIGHUP $(pidof dockerd)

此时 dockerd 会在日志中输出更多信息供分析。

检查内核日志

$ sudo dmesg |grep dockerd
$ sudo dmesg |grep runc

Docker 不响应时处理

可以杀死 dockerd 进程查看其堆栈调用情况。

$ sudo kill -SIGUSR1 $(pidof dockerd)

重置 Docker 本地数据

注意,本操作会移除所有的 Docker 本地数据,包括镜像和容器等。

更安全的替代方式是优先使用以下命令进行清理:

$ docker system prune

如果你只是想 “恢复出厂设置”,在 Docker Desktop 里也提供了相应入口。

只有在确认要丢弃本机全部镜像、容器、卷和构建缓存,并且已经停止 Docker 服务、完成备份或导出后,才考虑删除 Docker 数据目录:

$ sudo systemctl stop docker containerd
$ sudo cp -a /var/lib/docker /var/lib/docker.backup
$ sudo rm -rf /var/lib/docker
$ sudo systemctl start docker

常见故障排查

容器启动失败

如果容器启动后立即退出,可以使用 docker logs 查看原因。

  • Exit Code 1:应用程序错误。通常是配置错误或依赖缺失。
  • Exit Code 137:OOM (Out Of Memory)。容器内存不足被内核杀掉。
    • 检查宿主机内存。
    • 调整容器内存限制 (--memory)。
  • Exit Code 127:命令未找到。可能是 ENTRYPOINT 或 CMD 指定的命令不存在。

网络连接问题

容器内部无法联网
  1. 检查 Docker DNS 配置 (/etc/docker/daemon.json)。
  2. 检查宿主机防火墙 (iptables/firewalld) 是否拦截了转发。
  3. 容器内测试:ping 8.8.8.8(测试连通性),nslookup google.com(测试 DNS)。
端口映射不通
  1. 检查容器端口是否正确监听:netstat -tunlp(宿主机)或 docker exec <container> netstat -tunlp。
  2. 确认应用监听地址是 0.0.0.0 而不是 127.0.0.1。
    • 如果应用监听在 127.0.0.1,只有容器内部能访问,映射到宿主机外部也无法被外部请求访问。

镜像拉取失败

  • connection refused:检查网络或代理设置。
  • image not found:检查镜像名称和 Tag 拼写。
  • EOF / timeout:网络不稳定,尝试配置镜像加速器。