预约咨询 提交工单

Docker 容器运行时故障排查实用指南

本文深入探讨 Docker 容器运行时的故障排查方法,涵盖常见场景、症状、诊断命令、风险控制、回滚策略和验证步骤,帮助 DevOps/SRE 工程师高效解决问题。

Docker 容器运行时故障排查实用指南
DevOps 6min 23 浏览 2026-07-26
Docker容器运行时故障排查DevOpsSRE

场景

假设你维护的微服务应用突然停止工作,容器无法启动或运行异常。这可能是容器运行时问题,例如 Docker Engine、containerd 或 runc 故障。

症状

  • 容器启动后立即退出
  • 容器状态为“Exited”或“CrashLoopBackOff”
  • 容器运行但无响应或报错
  • 资源使用率异常高(CPU/内存)
  • Docker 守护进程日志显示错误

诊断

1. 检查容器日志

docker logs --tail 100 <container_id>

查找应用级错误。如果容器未启动,使用 docker logs <container_id> 获取最后输出。

2. 检查容器状态

docker inspect <container_id> | jq '.[0].State'

查看退出代码、重启次数和错误信息。

3. 监控实时事件

docker events --filter 'container=<container_id>' --since '1m'

观察容器的生命周期事件(启动、停止、OOM 等)。

4. 检查资源使用

docker stats --no-stream <container_id>

检查 CPU、内存和 I/O 指标。

5. 检查容器运行时底层状态

使用 crictl 命令直接与 containerd 通信:

crictl ps -a
crictl inspect <container_id>

查看 kubelet 管理的容器详细信息。

6. 检查 Docker 守护进程

journalctl -u docker.service --since '1 hour ago' | grep ERROR

或直接查看 Docker 日志:/var/log/docker.log

诊断命令总结

命令 用途
docker logs 查看应用日志
docker inspect 获取容器配置和状态
docker events 监控实时事件
docker stats 查看资源使用
crictl ps 列出 containerd 管理的容器
journalctl -u docker 检查 Docker 系统日志

风险控制

  • 避免在生产环境直接执行 docker rm -fdocker system prune 等破坏性操作。
  • 在隔离测试环境复现问题。
  • 对容器卷和重要数据提前备份。
  • 在执行诊断前,确保有回滚计划。

回滚策略

  1. 重启容器:尝试 docker restart <container_id>
  2. 回滚镜像版本:拉取上一个已知正常的镜像标签: bash docker pull myapp:v1.0.0 docker stop <container_id> docker rm <container_id> docker run -d --name myapp_container myapp:v1.0.0
  3. 使用编排工具回滚:如 Kubernetes 执行 kubectl rollout undo deployment/myapp
  4. 恢复容器卷:如果使用绑定挂载,从备份恢复数据。

验证

  • 确认容器运行:docker ps 显示状态为 Up。
  • 检查健康检查端点:curl http://localhost:8080/health 返回 200。
  • 查看应用日志无报错。
  • 执行功能测试确保服务正常。

何时提交 OpsGlobal 工单

  • 初步排查后问题依然无法定位或解决。
  • 出现内核级错误(如 OOM kill、kernel panic)。
  • 容器运行时组件(containerd、runc)故障影响多个容器。
  • 需要深度性能分析或根因分析。
  • 生产环境出现持续性故障,需要 7x24 专家支持。

OpsGlobal 提供远程 DevOps/SRE 支持,快速介入,保障业务连续性。

适用场景

适合正在处理 DevOps、Docker, 容器运行时, 故障排查, DevOps 相关问题的团队,用于快速建立排查路径和交付标准。

问题背景

本文深入探讨 Docker 容器运行时的故障排查方法,涵盖常见场景、症状、诊断命令、风险控制、回滚策略和验证步骤,帮助 DevOps/SRE 工程师高效解决问题。

排查步骤

先确认影响范围和最近变更,再收集日志、配置、指标和链路数据,最后按风险从低到高执行修复。

命令示例

示例命令请替换为你的真实资源名,并使用环境变量保存账号、密码、token 等敏感信息。

风险说明

生产环境操作前需要确认备份、权限边界、变更窗口和回滚路径,避免扩大故障影响。

回滚方案

保留原配置和发布版本;如修复后指标异常,立即回退配置、镜像或数据库变更并复核日志。

交付清单

问题定位记录、关键命令、修复步骤、验证结果、后续优化建议。

!

遇到类似技术问题?

如果你的服务器、K8s、Docker、CI/CD、数据库或监控系统出现类似问题,可以提交日志和配置文件,我们帮你远程诊断。

工单 WhatsApp 联系 咨询