繁体   English   中英

当 HEALTHCHECK 失败时,Docker 容器会发生什么情况

[英]What happens to a Docker Container when HEALTHCHECK fails

docker 文档说明了什么是HEALTHCHECK指令以及如何检查容器的运行状况。 但我无法弄清楚健康检查失败时会发生什么。 就像根据用户指令重新启动或停止容器或这两者中的任何一个一样。

此外,引用的示例是:
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1

exit 1是关于什么的?

运行HEALTHCKECKS时,您可以指定:

  • --interval=DURATION (默认 30 秒)

  • --timeout=DURATION (默认 30 秒)

  • --retries=N (默认 3)

容器可以有三种状态:

  • starting - 容器仍在启动时的初始状态。

  • healthy – 命令成功时。

  • unhealthy – 当HEALTHCHECK的单次运行花费的时间超过指定的超时时间时。 发生这种情况时,它将运行重试,如果仍然失败,将被宣布为“不健康”。

当检查连续失败指定次数时,失败的容器将:

  • 如果处于独立模式,则保持“不健康” state

  • 如果它处于Swarm 模式,则重新启动

否则它将以错误代码 0 退出,这意味着它被认为是“健康的”。

我希望它能让事情更清楚。

我看过一个很好的视频,那个人解释得很好

https://youtu.be/dLBGoaMz7dQ

基本上假设您正在生产中运行 web 服务器,它有 3 个副本。 在部署期间,您要确保不会丢失任何请求。 HEALTHCHECK基本上有助于识别服务器何时实际运行。 您的服务器需要一两秒钟才能开始侦听,在此期间 window 您可能会丢失请求。

通过使用HEALTHCHECKS您可以确保服务器正在运行,这就是为什么有时人们使用CURL (不是最佳实践)

exit 1 是运行状况检查的响应代码 0 - 成功 1 - 不正常 2 - 保留

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM