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

时间:2020-06-05 09:56:49

标签: docker dockerfile kubernetes-health-check health-check

码头工人docs说出HEALTHCHECK指令是什么以及如何检查容器的运行状况。但是我无法弄清楚当健康检查失败时会发生什么。就像按照用户说明重新启动或停止容器一样,或者按照上述两种方法中的任何一种来重新启动容器。

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

exit 1是什么?

2 个答案:

答案 0 :(得分:1)

我看过一个很好的视频,那个家伙讲得很好

https://youtu.be/dLBGoaMz7dQ

基本上,假设您正在生产中运行Web服务器,它具有3个副本。 在部署过程中,您要确保您不会丢失任何请求。 HEALTHCHECK基本上有助于确定服务器实际运行的时间。 您的服务器可能需要一两秒钟才能开始侦听,并且在该时间段内您可能会丢失请求。

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

答案 1 :(得分:1)

运行HEALTHCKECKS时,您可以指定:

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

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

  • --retries=N(默认3)

并且容器可以具有三种状态:

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

  • healthy –命令执行成功。

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

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

  • 如果处于 standaolne模式

  • ,则保持“不健康”状态
  • 如果处于群体模式

  • ,请重新启动

否则,它将退出并显示错误代码0,这表示它被视为“健康”。

我希望这可以使事情变得更清楚。

相关问题