Docker?容器健康檢查的指令方式詳解
正文

Docker 容器健康檢查指的是在 Dockerfile 中使用 HEALTHCHECK 指令對容器的運行狀態(tài)進行檢查,
并在 docker ps 的 STATUS 欄顯示 healthy/unhealthy。
HEALTHCHECK 指令有兩種格式
HEALTHCHECK [OPTIONS] CMD command(通過在容器內(nèi)運行命令檢查容器的健康狀態(tài))HEALTHCHECK NONE(禁用從基礎鏡像中繼承任何健康檢查)
HEALTHCHECK 指令告訴 Docker 如何測試一個容器,以檢查它是否仍在工作。
這可以檢測到一些情況,例如 web 服務器陷入無限循環(huán),無法處理新的連接,即使服務器進程仍在運行。
當容器指定了健康檢查時,除了正常狀態(tài)外,它還具有健康狀態(tài)。此狀態(tài)初始為 starting。
只要健康檢查通過,它就會恢復到 healthy(無論它以前處于什么狀態(tài))。在連續(xù)失敗一定次數(shù)后,它就會變得 unhealthy。
CMD 之前可以出現(xiàn)的選項有
- --interval=DURATION(默認:30s)
- --timeout=DURATION(默認:30s)
- --start-period=DURATION(默認:0s)
- --retries=N(默認:3)
運行狀態(tài)檢查
首先會在容器啟動后的 interval 秒內(nèi)運行,然后在前一次檢查完成后的 interval 秒內(nèi)再次運行。
如果一次狀態(tài)檢查花費的時間超過 timeout 秒,則認為這次檢查失敗。
容器的運行狀態(tài)檢查連續(xù)失敗 retries 次才會被視為不健康。
start period 為需要時間啟動的容器提供初始化時間。在此期間的探測失敗將不計入最大重試次數(shù)。
但是,如果在啟動期間健康檢查成功,則認為容器已啟動,所有連續(xù)失敗的情況都將計算到最大重試次數(shù)。
Dockerfile 中只能有一個 HEALTHCHECK 指令。如果列出多個,則只有最后一個 HEALTHCHECK 才會生效。
CMD 關鍵字后面的命令可以是 shell 命令(例如 HEALTHCHECK CMD /bin/check-running)或 exec 數(shù)組(與其他 Dockerfile 命令一樣,有關詳細信息,請參見 ENTRYPOINT)。
command 的退出狀態(tài)表示容器的健康狀態(tài)??赡艿闹凳牵?/p>
- 0:成功--容器運行良好,可以使用
- 1:不健康—-容器不能正常工作
- 2:保留--不使用此退出碼
例如,每五分鐘左右檢查一次 web 服務器是否能在三秒內(nèi)為站點的主頁提供服務:
HEALTHCHECK --interval=5m --timeout=3s \ CMD curl -f http://localhost/ || exit 1
為了幫助調(diào)試失敗的探測,command 寫在 stdout 或 stderr 上的任何輸出文本(UTF-8編碼)都將存儲在健康狀態(tài)中,并且可以通過 docker inspect 進行查詢。
這樣的輸出應該保持簡短(目前只存儲前4096個字節(jié))。
當容器的健康狀態(tài)發(fā)生變化時,將生成一個具有新狀態(tài)的 health_status 事件。
以上就是Docker 容器健康檢查的指令方式詳解的詳細內(nèi)容,更多關于Docker 容器健康檢查的資料請關注腳本之家其它相關文章!
相關文章
詳解Docker鏡像提交命令commit的工作原理和使用方法
這篇文章主要介紹了詳解Docker鏡像提交命令commit的工作原理和使用方法,可以依據(jù)這個容器創(chuàng)建本地鏡像,并可把這個鏡像推送到Docker hub中,以便在網(wǎng)絡上下載使用,感興趣的可以了解一下2018-11-11
Docker 部署 PostgreSQL數(shù)據(jù)庫的兩種方式
本文介紹了使用Docker部署PostgreSQL數(shù)據(jù)庫的兩種方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-07-07
關于Docker 刪除dead狀態(tài)的容器問題及解決方案
這篇文章主要介紹了Docker 刪除dead狀態(tài)的容器,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
docker中修改mysql最大連接數(shù)及配置文件的實現(xiàn)
這篇文章主要介紹了docker中修改mysql最大連接數(shù)及配置文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

