← 中文资源

简体中文版本

Docker 容器被健康检查标记为 unhealthy

通过修正健康检查命令、时间参数与所探测的端点,修复 Docker 的 unhealthy 容器。

阅读英文原文

症状

容器显示为 unhealthy,而应用看似在运行。健康状态会驱动编排,因此不健康的容器可能阻塞依赖或反复重启。失败通常来自镜像中不存在的探测命令、不反映就绪状态的端点、错误的地址,或短于真实启动时间的 start_period。

诊断

在容器内手动执行健康检查命令;用 docker inspect 查看健康日志;调整 start_period。

docker exec container sh -c "<healthcheck command>"

根因

健康检查命令反复失败,原因是探测有误、镜像中缺少所需工具,或 start_period 太短以致应用尚未就绪。

修复

让探测使用镜像中存在的工具并指向正确的主机与端口;按应用实际调优 interval、timeout、retries 与 start_period;端点应反映真实就绪状态。

验证

重启容器确认达到 healthy,并确认依赖服务在其后启动。状态健康且依赖可用即证明探测与实际相符。

常见陷阱

把健康检查设成只探端口而不校验依赖,会让未就绪的应用被误判为健康并提前接流量。