在 Swarm 模式下运行 Docker 时,HEALTHCHECK 的真正用途是什么?

在 Swarm 模式下运行 Docker 时,HEALTHCHECK 的真正用途是什么?

我很难弄清楚HEALTHCHECK在 Swarm 模式下运行 Docker 的真正用途。

有一个地方建议Docker 将重新开始一项被认为不健康的任务。另一个地方解释道 Docker 将停止发送流量去做一些不健康的任务。Docker 文档本身只解释了HEALTHCHECK指令是什么以及如何配置它。它并没有试图解释当任务不健康时会发生什么。

换句话说,我正在努力寻找一个清晰可信的解释来解释HEALTCHECK到底发生了什么。

此外,Docker REST API,这个特定的数据(任务是否健康)甚至没有针对任务公开(但针对容器公开)。这使得很难使用此指标来监控 Docker Swarm,所以在我看来这也不是该指标的主要目的。

当以 Swarm 模式运行 Docker 时,如果任务变得不健康,到底会发生什么?

答案1

您可以按照第一个链接建议的方式设置健康检查。所有这些方法都会告诉 docker 要运行什么命令、运行频率等。

如果您使用docker run启动容器,当健康检查失败时,UI 将显示不健康,但 docker 不会对容器执行任何操作。这取决于您或某些更高级别的监控解决方案对其采取什么行动。

如果您使用docker service create(或docker stack deploy) 创建 Swarm 服务并且健康检查失败,它将停止/终止该任务(容器)并重新安排新任务来替换该服务的副本。在停止/终止期间(它会尝试正常停止它,但像所有 docker 容器一样在 10 秒后终止),Swarm 将像对所有停止任务一样停止覆盖到该任务的入站流量。

相关内容