docker文档说明了什么是HEALTHCHECK
指令以及如何检查容器的健康状况。但我无法弄清楚健康检查失败时会发生什么。就像根据用户指令重新启动或停止容器或这两者中的任何一个一样。
此外,引用的示例是:
HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
是怎么回事exit 1
?
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
所需的时间超过指定的超时时间时。发生这种情况时,它将运行重试,如果仍然失败,将被宣布为“不健康”。
当检查连续失败指定次数时,失败的容器将:
如果处于独立模式,则保持“不健康”状态
如果它处于Swarm 模式,则重新启动
否则它将以错误代码 0 退出,这意味着它被认为是“健康的”。
我希望它能让事情更清楚。
我看过一个很好的视频,那个人解释得很好
https://youtu.be/dLBGoaMz7dQ
基本上假设您正在生产中运行一个 Web 服务器,它有 3 个副本。在部署期间,您要确保不会丢失任何请求。这HEALTHCHECK
基本上有助于识别服务器何时实际运行。您的服务器需要一两秒钟才能开始侦听,并且在那个时间窗口内您可能会丢失请求。
通过使用HEALTHCHECKS
,您可以确保服务器正在运行,这就是人们有时使用的原因CURL
(不是最佳实践)
exit 1 是运行状况检查的响应代码 0 - 成功 1 - 不正常 2 - 保留