中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

docker容器的健康檢測

發布時間:2020-06-11 17:08:04 來源:億速云 閱讀:582 作者:元一 欄目:云計算

概述

Docker 

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器或Windows 機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。

dockerfile

Dockerfile是一個包含用于組合映像的命令的文本文檔。可以使用在命令行中調用任何命令。 Docker通過讀取Dockerfile中的指令自動生成映像。

docker容器的健康檢測是在編寫dockerfile時,將檢測機制寫入到dockerfile中,基于此docerfile生成的鏡像,在運行容器時會有健康檢測的功能。

dockerfile中的格式:

  • HEALTHCHECK [選項] CMD <命令>:設置檢查容器健康狀況的命令。
  • HEALTHCHECK NONE:如果基礎鏡像有健康檢查指令,使用這行可以屏蔽掉其健康檢查指令。

HEALTHCHECK 指令是告訴 Docker引擎應該如何進行判斷容器的狀態是否正常,這是 Docker 1.12 引入的指令。

在沒有 HEALTHCHECK 指令前,Docker 引擎只可以通過容器內主進程是否退出來判斷容器是否狀態異常。很多情況下這沒問題,但是如果程序進入死鎖狀態,或者死循環狀態,應用進程并不退出,但是該容器已經無法提供服務了。在 1.12 以前,Docker 不會檢測到容器的這種狀態,從而不會重新調度,導致可能會有部分容器已經無法提供服務了卻還在接受用戶請求。

而自 1.12 之后,Docker 提供了 HEALTHCHECK 指令,通過該指令指定一行命令,用這行命令來判斷容器主進程的服務狀態是否還正常,從而比較真實的反應容器實際狀態。

當在一個鏡像指定了 HEALTHCHECK 指令后,用其啟動容器,初始狀態會為 starting,在 HEALTHCHECK 指令檢查成功后變為 healthy,如果連續一定次數失敗,則會變為 unhealthy。

HEALTHCHECK 支持下列選項:

  • --interval=<間隔>:兩次健康檢查的間隔,默認為 30 秒;
  • --timeout=<時長>:健康檢查命令運行超時時間,如果超過這個時間,本次健康檢查就被視為失敗,默認 30 秒;
  • --retries=<次數>:當連續失敗指定次數后,則將容器狀態視為 unhealthy,默認 3 次。

和 CMD, ENTRYPOINT 一樣,HEALTHCHECK 只可以出現一次,如果寫了多個,只有最后一個生效。

在 HEALTHCHECK [選項] CMD 后面的命令,格式和 ENTRYPOINT 一樣,分為 shell 格式,和 exec 格式。命令的返回值決定了該次健康檢查的成功與否:0:成功;1:失敗;2:保留,不要使用這個值。

用法舉例:

[root@node02 test]# cat Dockerfile      #Dockerfile文件如下
FROM nginx:latest
COPY test.txt /test.txt
HEALTHCHECK --interval=5s --timeout=3s CMD cat /test.txt || exit 1 

這里我們設置了每 5 秒檢查一次(這里為了試驗所以間隔非常短,實際應該相對較長),如果健康檢查命令超過 3 秒沒響應就視為失敗,并且使用CMD cat /test.txt || exit 1 作為健康檢查命令。

構建鏡像:

[root@node02 test]# docker build -t lzj:v6 .

啟動一個容器:

[root@node02 test]# docker run -d --name web03 lzj:v6

當該容器運行后,就可以查看到該容器的運行狀態,初始狀態為(health: starting),當一次檢測成功后,會轉換為(healthy),如下:

docker容器的健康檢測

如果健康檢查連續失敗超過了重試次數,狀態就會變為 (unhealthy)。我這里進入容器將其CMD執行的查看test.txt文件刪除掉,狀態就會為unhealthy,如下:

docker容器的健康檢測

為了幫助排障,健康檢查命令的輸出(包括 stdout 以及 stderr)都會被存儲于健康狀態里,可以用 docker inspect 來查看。

docker容器的健康檢測

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

保定市| 香河县| 同德县| 柘城县| 安龙县| 枣阳市| 凌源市| 和静县| 广水市| 辉南县| 新安县| 拉孜县| 永吉县| 招远市| 中牟县| 长寿区| 天峻县| 阿拉尔市| 辽宁省| 辰溪县| 剑河县| 台北市| 弥勒县| 浪卡子县| 石渠县| 慈溪市| 泸西县| 邵东县| 五莲县| 西青区| 米林县| 兴国县| 宁国市| 布拖县| 普洱| 长沙市| 成安县| 青川县| 新疆| 萝北县| 六盘水市|