首页/云/云与容器速查/Dockerfile HEALTHCHECK 健康检查
容器与 Docker106 条

Dockerfile HEALTHCHECK 健康检查

定义容器内自检命令:通过则 docker ps 显示 healthy,失败累计显示 unhealthy。让编排与监控可以基于状态而非端口探测判断可用性。

云与容器速查云更新于 2026-10-12
参数--interval=30s 间隔 / --timeout=5s 超时 / --start-period=20s 启动宽限 / --retries=3 连续失败阈值
退出码0 健康;1 不健康;2 保留不用
禁用docker run --no-healthcheck;子镜像可用 NONE 覆盖
查看docker inspect 看 State.Health 的历史探测输出

HTTP 自检示例

HTTP 自检示例
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 CMD curl -fsS http://127.0.0.1:8080/healthz || exit 1
distroless/scratch 镜像没有 shell 与 curl:健康检查要么用自身二进制、要么换 exec 形式,否则永远 unhealthy。

易错点

  • 不设 start-period:慢启动应用被反复判定 unhealthy,甚至被编排重启
  • 检查路径依赖外部依赖(数据库等):依赖抖动导致误判不健康

数据来源与参考

  • Docker Docs:Dockerfile reference(HEALTHCHECK)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌