用途:系统化诊断和解决常见 Docker 问题,适用于容器启动失败、退出码异常、OOM、磁盘或日志占满、网络不通、守护进程异常、权限报错等场景。
主要能力:提供五步诊断框架——查看容器状态(docker ps -a、docker inspect)、查看日志(docker logs --tail 100)、检查资源(docker stats、docker system df)、检查退出码(docker inspect --format='{{.State.ExitCode}}')、交互式调试(docker run --rm -it image sh)。并给出退出码参考:1 应用错误、125 守护进程错误、126 无法执行、127 命令未找到、137 SIGKILL(OOM 或 kill)、139 段错误、143 SIGTERM。
磁盘与资源:用 docker system df 及 -v 查看占用,用 docker system prune -a、docker image prune -a、docker volume prune 清理;通过 --log-opt max-size=10m --log-opt max-file=3 做日志轮转。OOM 可用 docker inspect --format='{{.State.OOMKilled}}' 判断,用 docker update --memory=1g --memory-swap=1g 调整限制。网络排查涉及 docker network inspect、ip addr、ping、nslookup、/etc/resolv.conf 及 iptables -t nat -L DOCKER -n。权限问题可用 -u $(id -u):$(id -g) 匹配 UID,或将用户加入 docker 组。
限制与注意:docker system prune -a 具破坏性,会删除所有未使用对象,生产环境勿盲目执行;JSON-file 日志驱动默认不轮转,可能静默占满磁盘;OOMKilled 为真时日志中通常无错误;Exited (0) 但服务不可用需检查监听地址。网络包级分析需 tcpdump/Wireshark,内核级问题需 Linux 调试技能;应用代码 bug、生产部署、安全漏洞修复不在范围内。避免在生产容器中 docker exec 暴露敏感数据,勿将 Docker socket 暴露给容器。官方参考见 https://docs.docker.com/engine/troubleshoot/ 等文档。