Docker原生健康檢查使用

2022-01-26 03:15:42 字數 1058 閱讀 2806

docker 原生健康檢查能力

而自 1.12 版本之後,docker 引入了原生的健康檢查實現,可以在dockerfile中宣告應用自身的健康檢測配置。healthcheck 指令宣告了健康檢測命令,用這個命令來判斷容器主程序的服務狀態是否正常,從而比較真實的反應容器實際狀態。

healthcheck 指令格式:

healthcheck [選項] cmd 《命令》:設定檢查容器健康狀況的命令

healthcheck none:如果基礎映象有健康檢查指令,使用這行可以遮蔽掉

注:在dockerfile中 healthcheck 只可以出現一次,如果寫了多個,只有最後乙個生效。

使用包含 healthcheck 指令的dockerfile構建出來的映象,在例項化docker容器的時候,就具備了健康狀態檢查的功能。啟動容器後會自動進行健康檢查。

healthcheck 支援下列選項:

--interval=《間隔》:兩次健康檢查的間隔,預設為 30 秒;

--timeout=《間隔》:健康檢查命令執行超時時間,如果超過這個時間,本次健康檢查就被視為失敗,預設 30 秒;

--retries=《次數》:當連續失敗指定次數後,則將容器狀態視為 unhealthy,預設 3 次。

--start-period=《間隔》: 應用的啟動的初始化時間,在啟動過程中的健康檢查失效不會計入,預設 0 秒; (從17.05)引入

在 healthcheck [選項] cmd 後面的命令,格式和 entrypoint 一樣,分為 shell 格式,和 exec 格式。命令的返回值決定了該次健康檢查的成功與否:

0:成功;

1:失敗;

2:保留值,不要使用

容器啟動之後,初始狀態會為

starting (啟動中)。docker engine會等待 interval

時間,開始執行健康檢查命令,並週期性執行。如果單次檢查返回值非0或者執行需要比指定 timeout

時間還長,則本次檢查被認為失敗。如果健康檢查連續失敗超過了 retries 重試次數,狀態就會變為 unhealthy (不健康)。

Docker 容器健康檢查

docker 容器健康檢查指的是在 dockerfile 中使用healthcheck指令對容器的執行狀態進行檢查,並在docker ps的 status 欄顯示 healthy unhealthy。healthcheck指令有兩種格式 healthcheck指令告訴 docker 如何測試乙個容器...

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 ...

Nginx被動健康檢查和主動健康檢查

1.被動健康檢查 nginx自帶有健康檢查模組 ngx http upstream module,可以做到基本的健康檢查,配置如下 upstream cluster server nginx只有當有訪問時後,才發起對後端節點探測。如果本次請求中,節點正好出現故障,nginx依然將請求轉交給故障的節點...