您好,登錄后才能下訂單哦!
本篇內容主要講解“Docker容器健康檢查是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Docker容器健康檢查是什么”吧!
Docker 容器健康檢查指的是在 Dockerfile 中使用 HEALTHCHECK
指令對容器的運行狀態進行檢查, 并在 docker ps
的 STATUS 欄顯示 healthy/unhealthy。
HEALTHCHECK
指令有兩種格式:
HEALTHCHECK [OPTIONS] CMD command
(通過在容器內運行命令檢查容器的健康狀態)
HEALTHCHECK NONE
(禁用從基礎鏡像中繼承任何健康檢查)
HEALTHCHECK
指令告訴 Docker 如何測試一個容器,以檢查它是否仍在工作。 這可以檢測到一些情況,例如 web 服務器陷入無限循環,無法處理新的連接,即使服務器進程仍在運行。
當容器指定了健康檢查時,除了正常狀態外,它還具有健康狀態。此狀態初始為 starting
。 只要健康檢查通過,它就會恢復到 healthy
(無論它以前處于什么狀態)。在連續失敗一定次數后,它就會變得 unhealthy
。
CMD
之前可以出現的選項有:
--interval=DURATION(默認:30s)
--timeout=DURATION(默認:30s)
--start-period=DURATION(默認:0s)
--retries=N(默認:3)
運行狀態檢查首先會在容器啟動后的 interval
秒內運行,然后在前一次檢查完成后的 interval
秒內再次運行。
如果一次狀態檢查花費的時間超過 timeout
秒,則認為這次檢查失敗。
容器的運行狀態檢查連續失敗 retries
次才會被視為不健康。
start period
為需要時間啟動的容器提供初始化時間。在此期間的探測失敗將不計入最大重試次數。 但是,如果在啟動期間健康檢查成功,則認為容器已啟動,所有連續失敗的情況都將計算到最大重試次數。
Dockerfile 中只能有一個 HEALTHCHECK
指令。如果列出多個,則只有最后一個 HEALTHCHECK
才會生效。
CMD
關鍵字后面的命令可以是 shell 命令(例如 HEALTHCHECK CMD /bin/check-running
)或 exec 數組(與其他 Dockerfile 命令一樣,有關詳細信息,請參見 ENTRYPOINT
)。
command
的退出狀態表示容器的健康狀態。可能的值是:
0:成功--容器運行良好,可以使用
1:不健康—-容器不能正常工作
2:保留--不使用此退出碼
例如,每五分鐘左右檢查一次 web 服務器是否能在三秒內為站點的主頁提供服務:
HEALTHCHECK --interval=5m --timeout=3s \ CMD curl -f http://localhost/ || exit 1
為了幫助調試失敗的探測,command
寫在 stdout 或 stderr 上的任何輸出文本(UTF-8編碼)都將存儲在健康狀態中,并且可以通過 docker inspect
進行查詢。 這樣的輸出應該保持簡短(目前只存儲前4096個字節)。
當容器的健康狀態發生變化時,將生成一個具有新狀態的 health_status
事件。
到此,相信大家對“Docker容器健康檢查是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。