
看到容器退出时,直接反复重启很少能解决问题。排查应先确认状态和退出原因,再根据日志时间线检查配置、依赖和资源。
1. 先看状态与退出码
使用 docker compose ps 和 docker inspect 查看是否重启循环、是否被 OOM 杀死,以及健康检查状态。退出码能快速区分程序异常和系统信号。
2. 围绕故障时间读取日志
使用 –since、–tail 和时间戳缩小范围,同时查看应用与依赖服务日志。不要只盯最后一条错误。
3. 核对配置与依赖
确认环境变量是否加载、挂载文件是否存在、数据库和缓存是否就绪。服务启动顺序正确不代表依赖已经可用。
4. 检查主机资源与网络
查看磁盘空间、内存、端口占用和 DNS 解析。应用超时有时来自宿主机资源不足,而非代码逻辑。
常见误区
- 反复重启覆盖现场
- 只检查单个容器
- 忽略磁盘写满
- 把健康检查失败等同于进程退出
执行检查清单
- 退出码和重启次数已记录
- 故障时间线完整
- 依赖服务可连接
- 资源和网络已排除
总结
容器排错要把应用、运行时和宿主机放在同一条证据链上。先记录再操作,往往能省下大量试错时间。