码头工人docs说出HEALTHCHECK
指令是什么以及如何检查容器的运行状况。但是我无法弄清楚当健康检查失败时会发生什么。就像按照用户说明重新启动或停止容器一样,或者按照上述两种方法中的任何一种来重新启动容器。
进一步引用的示例是:
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
exit 1
是什么?
答案 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
–命令执行成功。
unhealthy
– HEALTHCHECK
的单次运行花费的时间超过指定的超时时间。发生这种情况时,它将重试,如果仍然失败,将被宣布为“不健康”。
当检查连续失败指定次数时,失败的容器将:
如果处于 standaolne模式
如果处于群体模式
否则,它将退出并显示错误代码0,这表示它被视为“健康”。
我希望这可以使事情变得更清楚。