症状
容器显示为 unhealthy,而应用看似在运行。健康状态会驱动编排,因此不健康的容器可能阻塞依赖或反复重启。失败通常来自镜像中不存在的探测命令、不反映就绪状态的端点、错误的地址,或短于真实启动时间的 start_period。
诊断
在容器内手动执行健康检查命令;用 docker inspect 查看健康日志;调整 start_period。
docker exec container sh -c "<healthcheck command>"
根因
健康检查命令反复失败,原因是探测有误、镜像中缺少所需工具,或 start_period 太短以致应用尚未就绪。
修复
让探测使用镜像中存在的工具并指向正确的主机与端口;按应用实际调优 interval、timeout、retries 与 start_period;端点应反映真实就绪状态。
验证
重启容器确认达到 healthy,并确认依赖服务在其后启动。状态健康且依赖可用即证明探测与实际相符。
常见陷阱
把健康检查设成只探端口而不校验依赖,会让未就绪的应用被误判为健康并提前接流量。