Docker 容器健康检查操作手册
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/docker-container-health-check-runbook。
技能介绍
要解决的问题
容器「没崩」不等于「健康」。Docker 默认只报告进程是否存活:docker ps 里状态是 Up,也可能是应用线程死锁、请求超时或文件句柄耗尽。真实故障往往表现为资源逼近上限、网络端点不可达、挂载卷内容异常,但这些信号分散在 docker inspect、docker stats 和 Docker Engine API 的输出里,手工逐条排查耗时且容易漏项,多容器、多主机的部署里尤其明显。
技能如何工作
技能按固定顺序收集证据,而不是凭经验猜:
- 状态与配置:通过
docker inspect读取State、重启策略、健康检查定义与退出码,区分启动失败和运行中退化。 - 资源画像:用
docker stats抓取 CPU、内存与 I/O 实际占用,与部署中声明的--cpu-limit、--memory等限制对照,找出逼近上限或被节流的容器。 - 网络与存储:通过 Docker Engine API 核对网络端点可达性、IP/端口分配,以及卷挂载点的挂载与读写完整性,把「容器内应用故障」和「宿主侧挂载丢失」分开。
结果按检查项组织,每项标注数据来源命令,可直接贴进运维群作为证据。
适用边界与注意点
- 只诊断,不自愈:技能负责定位与归因,修复、重启、扩缩容仍由人工或编排层执行。
- 需要宿主访问权限:
docker stats与 Engine API 调用要求在 Docker 宿主或等价权限环境运行,纯托管容器运行时可能只暴露部分接口。 - 版本与命名:Docker Engine 发布包使用
docker-前缀(如 Docker Engine 29.0.0 对应docker-v29.0.0)。资料提取自 moby/moby 的 README;Moby 是 Docker 为推进软件容器化创建的开源项目,其组件最初来自 Docker Project 的开源部分。不同发行版的命令输出和 API 字段可能略有差异,docker-前缀与 Engine 版本号对不上时,先核对实际安装版本。 - 非容器故障:内核、网络策略、存储后端问题不在诊断范围内,但检查结果可作为排除依据。
使用场景
- 容器状态显示 Up 但接口超时时,诊断 CPU/内存限额、网络连通性与卷挂载是否异常。
- 发布后启动失败或反复重启时,通过 inspect 读取退出码、重启策略与健康检查定义定位原因。
- 多容器共享宿主网络或卷时,核对 IP/端口分配与挂载完整性,区分应用故障和宿主侧配置问题。
- 需要为故障复盘留证时,按检查项导出资源与网络诊断结果,标注每项的数据来源。
适合人员
- 负责生产 Docker 集群的平台工程师,需要在值班时快速判断容器是否真的健康。
- 排查容器化服务故障的 SRE,需要按统一流程采集 inspect、stats 与 Engine API 证据。
- 管理容器宿主的运维人员,需要在改动网络、限额或挂载后验证实际运行状态。
- 参与故障复盘的研发或运维,需要可复核的诊断记录而不是主观结论。