首頁 資訊 Docker?容器健康檢查的指令方式詳解

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

來源:泰然健康網(wǎng) 時間:2024年12月29日 15:43

正文

Docker 容器健康檢查指的是在 Dockerfile 中使用 HEALTHCHECK 指令對容器的運行狀態(tài)進行檢查,
并在 docker ps 的 STATUS 欄顯示 healthy/unhealthy。

HEALTHCHECK 指令有兩種格式

HEALTHCHECK [OPTIONS] CMD command(通過在容器內(nèi)運行命令檢查容器的健康狀態(tài))HEALTHCHECK NONE(禁用從基礎(chǔ)鏡像中繼承任何健康檢查)

HEALTHCHECK 指令告訴 Docker 如何測試一個容器,以檢查它是否仍在工作。
這可以檢測到一些情況,例如 web 服務(wù)器陷入無限循環(huán),無法處理新的連接,即使服務(wù)器進程仍在運行。

當(dāng)容器指定了健康檢查時,除了正常狀態(tài)外,它還具有健康狀態(tài)。此狀態(tài)初始為 starting。
只要健康檢查通過,它就會恢復(fù)到 healthy(無論它以前處于什么狀態(tài))。在連續(xù)失敗一定次數(shù)后,它就會變得 unhealthy。

CMD 之前可以出現(xiàn)的選項有

--interval=DURATION(默認(rèn):30s)--timeout=DURATION(默認(rèn):30s)--start-period=DURATION(默認(rèn):0s)--retries=N(默認(rèn):3)

運行狀態(tài)檢查

首先會在容器啟動后的 interval 秒內(nèi)運行,然后在前一次檢查完成后的 interval 秒內(nèi)再次運行。

如果一次狀態(tài)檢查花費的時間超過 timeout 秒,則認(rèn)為這次檢查失敗。

容器的運行狀態(tài)檢查連續(xù)失敗 retries 次才會被視為不健康。

start period 為需要時間啟動的容器提供初始化時間。在此期間的探測失敗將不計入最大重試次數(shù)。
但是,如果在啟動期間健康檢查成功,則認(rèn)為容器已啟動,所有連續(xù)失敗的情況都將計算到最大重試次數(shù)。

Dockerfile 中只能有一個 HEALTHCHECK 指令。如果列出多個,則只有最后一個 HEALTHCHECK 才會生效。

CMD 關(guān)鍵字后面的命令可以是 shell 命令(例如 HEALTHCHECK CMD /bin/check-running)或 exec 數(shù)組(與其他 Dockerfile 命令一樣,有關(guān)詳細(xì)信息,請參見 ENTRYPOINT)。

command 的退出狀態(tài)表示容器的健康狀態(tài)。可能的值是:

0:成功--容器運行良好,可以使用1:不健康—-容器不能正常工作2:保留--不使用此退出碼

例如,每五分鐘左右檢查一次 web 服務(wù)器是否能在三秒內(nèi)為站點的主頁提供服務(wù):

1

2

HEALTHCHECK --interval=5m --timeout=3s

  CMD curl -f http://localhost/ || exit 1

為了幫助調(diào)試失敗的探測,command 寫在 stdout 或 stderr 上的任何輸出文本(UTF-8編碼)都將存儲在健康狀態(tài)中,并且可以通過 docker inspect 進行查詢。
這樣的輸出應(yīng)該保持簡短(目前只存儲前4096個字節(jié))。

當(dāng)容器的健康狀態(tài)發(fā)生變化時,將生成一個具有新狀態(tài)的 health_status 事件。

以上就是Docker 容器健康檢查的指令方式詳解的詳細(xì)內(nèi)容,更多關(guān)于Docker 容器健康檢查的資料請關(guān)注腳本之家其它相關(guān)文章!

原文鏈接:https://segmentfault.com/a/1190000039073943

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。
如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請將相關(guān)資料發(fā)送至 reterry123@163.com 進行投訴反饋,一經(jīng)查實,立即處理!

相關(guān)知識

Docker安全性:最佳實踐和常見安全考慮
Docker鏡像瘦身技巧的新思路(基于chiselled Ubuntu)本文介紹一種docker image瘦身的技巧
使用 docker 部署 AspNetCore 應(yīng)用:使用alpine鏡像并加入健康檢查和瘦身
[云原生] Kubernetes(k8s)健康檢查詳解與實戰(zhàn)演示(就緒性探針 和 存活性探針)
k8s健康檢查 spring k8s健康檢查探針多個地址
《口腔健康調(diào)查 檢查方法》標(biāo)準(zhǔn)解讀
負(fù)載均衡SLB四層(TCP/UDP)健康檢查出現(xiàn)異常的解決方法
健康檢查項目詳細(xì)分析
茹珺:產(chǎn)前檢查項目詳解:了解每一項檢查的意義
醫(yī)院特殊行業(yè)全面體檢項目表:詳解職業(yè)健康檢查必備內(nèi)容(附2024年版)

網(wǎng)址: Docker?容器健康檢查的指令方式詳解 http://m.u1s5d6.cn/newsview905353.html

推薦資訊