Docker 容器故障排查:状态、日志、资源与网络四步法
容器出问题后的第一反应经常是“先重启试试”。重启可能暂时恢复服务,却也可能覆盖关键现场。更稳定的做法,是按固定顺序收集证据。
第一步:看状态,不急着操作
docker ps -a
docker inspect <container>
docker compose ps重点确认退出码、健康检查、重启次数、镜像版本、挂载和环境变量。退出码能够快速区分应用主动退出、配置错误和资源终止。
第二步:读日志,并锁定时间窗口
docker logs --since 30m --tail 300 <container>
docker compose logs --since 30m <service>从第一条异常开始读,而不是只看最后一行。数据库连接失败可能来自 DNS、密码、服务尚未就绪或连接数耗尽,最后一条重试信息通常不是根因。
第三步:检查宿主机资源
确认磁盘空间、内存、CPU、文件句柄和 inode。磁盘未满并不代表 inode 充足;内存看似够用,也可能已经触发 OOM。资源问题应同时查看容器限制和宿主机实际压力。
第四步:验证网络链路
依次检查容器是否监听正确端口、端口映射是否存在、服务名能否解析、反向代理是否指向正确地址,以及防火墙和安全组是否放行。
修复后留下记录
记录故障时间、影响、根因、临时处理、永久修复和验证方式。把临时命令改成配置或监控规则,下一次同类问题才不会重新从头排查。