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

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

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

正文

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

HEALTHCHECK 指令有兩種格式

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

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

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

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

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

運(yùn)行狀態(tài)檢查

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

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

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

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

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

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

command 的退出狀態(tài)表示容器的健康狀態(tài)??赡艿闹凳牵?/p> 0:成功--容器運(yùn)行良好,可以使用1:不健康—-容器不能正常工作2:保留--不使用此退出碼

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

1

2

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

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

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

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

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

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

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

相關(guān)知識

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

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

推薦資訊