Healthcheck

在 swarm 模式下執行 Docker 時,HEALTHCHECK 真正用於什麼?

  • January 6, 2018

我很難弄清楚HEALTHCHECK在 swarm 模式下執行 Docker 時真正使用的是什麼。

有一個地方建議Docker 將重新啟動一項被認為不健康的任務。另一個地方解釋說 Docker 將停止向不健康的任務發送流量。Docker 文件本身只解釋了HEALTHCHECK指令是什麼,以及如何配置它。它沒有試圖解釋當任務不健康時會發生什麼。

換句話說,我正在努力尋找一個清晰可靠的解釋來解釋HEALTCHECK真正的作用。

此外,查看Docker REST API,這個特定的數據(任務是否健康)甚至沒有暴露給任務(儘管它暴露給容器)。這使得使用該指標來監控 Docker Swarm 變得很困難,因此在我看來,這也不是該指標的主要目的。

當在 swarm 模式下執行 Docker 時任務變得不健康時會發生什麼?

您設置健康檢查的方式與您的第一個連結建議的方式相同。所有這些方式都會告訴 docker 執行什麼命令,執行它的頻率等。

如果你使用docker run啟動容器,當健康檢查失敗時 UI 會顯示不健康,但 docker 不會對容器做任何事情。這取決於您或某些更高級別的監控解決方案來對其採取行動。

如果您使用docker service create(或docker stack deploy)創建 Swarm 服務並且健康檢查失敗,它將停止/終止任務(容器)並重新安排新任務以替換該服務的副本。在停止/終止期間(它嘗試優雅地停止它,但像所有 docker 容器一樣在 10 秒後終止),Swarm 將停止覆蓋該任務的入站流量,就像它對所有停止任務所做的那樣。

引用自:https://serverfault.com/questions/890948