docker 容器健康檢查指的是在 dockerfile 中使用healthcheck
指令對容器的執行狀態進行檢查,
並在docker ps
的 status 欄顯示 healthy/unhealthy。
healthcheck
指令有兩種格式:
healthcheck
指令告訴 docker 如何測試乙個容器,以檢查它是否仍在工作。
這可以檢測到一些情況,例如 web 伺服器陷入無限迴圈,無法處理新的連線,即使伺服器程序仍在執行。
當容器指定了健康檢查時,除了正常狀態外,它還具有健康狀態。此狀態初始為starting
。
只要健康檢查通過,它就會恢復到healthy
(無論它以前處於什麼狀態)。在連續失敗一定次數後,它就會變得unhealthy
。
cmd
之前可以出現的選項有:
執行狀態檢查首先會在容器啟動後的interval
秒內執行,然後在前一次檢查完成後的interval
秒內再次執行。
如果一次狀態檢查花費的時間超過timeout
秒,則認為這次檢查失敗。
容器的執行狀態檢查連續失敗retries
次才會被視為不健康。
start period
為需要時間啟動的容器提供初始化時間。在此期間的探測失敗將不計入最大重試次數。
但是,如果在啟動期間健康檢查成功,則認為容器已啟動,所有連續失敗的情況都將計算到最大重試次數。
dockerfile 中只能有乙個healthcheck
指令。如果列出多個,則只有最後乙個healthcheck
才會生效。
cmd
關鍵字後面的命令可以是 shell 命令(例如healthcheck cmd /bin/check-running
)或 exec 陣列(與其他 dockerfile 命令一樣,有關詳細資訊,請參見entrypoint
)。
command
的退出狀態表示容器的健康狀態。可能的值是:
例如,每五分鐘左右檢查一次 web 伺服器是否能在三秒內為站點的主頁提供服務:
為了幫助除錯失敗的探測,command
寫在 stdout 或 stderr 上的任何輸出文字(utf-8編碼)都將儲存在健康狀態中,並且可以通過docker inspect
進行查詢。
這樣的輸出應該保持簡短(目前只儲存前4096個位元組)。
當容器的健康狀態發生變化時,將生成乙個具有新狀態的health_status
事件。
Docker原生健康檢查使用
docker 原生健康檢查能力 而自 1.12 版本之後,docker 引入了原生的健康檢查實現,可以在dockerfile中宣告應用自身的健康檢測配置。healthcheck 指令宣告了健康檢測命令,用這個命令來判斷容器主程序的服務狀態是否正常,從而比較真實的反應容器實際狀態。healthchec...
lvs mysql健康檢查 lvs 健康檢查方式
一 tcp 4層檢查 virtual server 192.168.2.213 80 delay loop 6 lb algo wlc 採取權重式最少鏈結分配 lb kind dr 採取dr模式 protocol tcp real server 192.168.2.220 80 tcp check ...
關於容器的健康檢查 Health Check
關於容器的健康檢查 health check 是可以從業務層面檢查狀態,health check 可以是任何乙個單獨的命令,docker 會在容器中執行該命令,如果返回 0,容器被認為是 healthy,如果返回 1,則為 unhealthy。對於提供 http 服務介面的應用,常用的 health...