预约咨询 提交工单

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

本文深入探讨Docker容器运行时的常见故障,包括故障场景、症状、诊断步骤、命令、风险控制、回滚方法、验证流程以及何时提交OpsGlobal工单。

Docker容器运行时故障排查实战指南
DevOps 6min 34 浏览 2026-07-13
Docker容器运行时故障排查DevOps

故障场景

假设一个生产环境中的Docker容器突然异常退出,状态显示“Exited (1)”或类似错误码,应用无法访问。容器化应用使用自定义镜像,且之前稳定运行。

症状

  • docker ps 显示容器状态为“Exited”
  • docker logs <container> 输出运行时错误,如“exec: permission denied”或“OCI runtime create failed”
  • 系统日志(如journalctl -u docker)显示运行时引擎(containerd/runc)异常

诊断步骤

  1. 检查容器日志:docker logs <container> 获取最近输出
  2. 检查容器状态详情:docker inspect <container> --format='{{json .State}}' 查看退出码和错误
  3. 检查Docker守护进程状态:systemctl status dockerjournalctl -u docker -n 100
  4. 测试基本运行时:docker run --rm busybox echo test 验证容器引擎核心功能
  5. 查看资源限制:docker inspect <container> | jq '.[].HostConfig.Memory' 确认内存和CPU设置
  6. 检查镜像完整性:docker run --rm <image> /bin/sh -c 'ls' 确保镜像可执行

关键命令

docker logs <container>
docker inspect <container>
docker system df   # 检查磁盘使用情况
journalctl -u docker -n 50 --no-pager
cat /var/log/syslog | grep docker

风险控制

  • 使用--restart=always--restart=on-failure确保容器自动重启
  • 设置资源限制(--memory, --cpus)防止OOM
  • 避免无限制的--privileged权限
  • 配置健康检查指令(HEALTHCHECK)

回滚方法

  • 如果问题源于新镜像版本,回退到稳定版本:docker pull <image>:stable 然后重新创建容器
  • 如果配置文件错误,恢复备份配置文件并重启容器
  • 使用docker commit创建当前容器快照(但不建议长期依赖)

验证流程

  1. 启动容器后,观察日志:docker logs -f <container>
  2. 检查容器状态:docker ps 应显示“Up”
  3. 执行应用健康检查(如curl端点)
  4. 压力测试:模拟负载确认稳定性

何时提交OpsGlobal工单

  • 基础排查后问题未解决,且需要深入分析系统级故障
  • 怀疑内核、存储驱动或网络插件(如overlay)问题
  • 需要修改Docker守护进程配置或升级Docker版本
  • 需要专业团队介入恢复数据或优化性能

适用场景

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

问题背景

本文深入探讨Docker容器运行时的常见故障,包括故障场景、症状、诊断步骤、命令、风险控制、回滚方法、验证流程以及何时提交OpsGlobal工单。

排查步骤

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

命令示例

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

风险说明

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

回滚方案

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

交付清单

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

!

遇到类似技术问题?

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

工单 WhatsApp 联系 咨询