1. 程式人生 > >容器的健康狀態檢查

容器的健康狀態檢查

docker 1.12新加了不少命令,而健康檢查相關的命令,讓容器的健康檢查變得十分的簡單。

可以通過 docker run --help 找到和健康檢查相關的命令以及介紹:

--health-cmd string           Command to run to check health
--health-interval duration    Time between running the check
--health-retries int          Consecutive failures needed to report unhealthy
--health-timeout duration     Maximum time to allow one check to run

因此,在docker run的時候,可以通過新增 health-cmd 來明確健康檢查的命令;可以通過 health-interval 命令來確定兩次檢查的間隔時間;health-retries 可以設定一個上限,當檢查失敗次數超過上限之後便會報告費健康狀態;health-timeout 可以設定一次健康檢查的時間上限,如果超過這個時間,便認為是檢查失敗的。

使用這些命令也十分簡單,比如:

Hypo-MBP:~ hypo$ docker run -d --health-cmd="curl stat /etc/passwd || exit 1" --health-interval=5s --health-retries=3  --health-timeout=5s busybox sleep 10000
05e80cb5daba9521dc6b3745f1618c2ac695e0ba565957134dd0b9016f06125b
Hypo-MBP:~ hypo$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                            PORTS                    NAMES
05e80cb5daba        busybox             "sleep 10000"            3 seconds ago        Up 2 seconds (health: starting)                            kickass_wilson

如果容器在健康狀態,在docker ps的時候就會發現被註明健康。如果不在健康狀態,便會顯示:

2e533723454c        busybox             "sleep 10000"            About a minute ago   Up About a minute (unhealthy)                              desperate_agnesi

不僅可以通過docker cli來設定健康檢查的方式,可以把健康檢查的方式寫到dockerfile裡。還是上文的例子,寫成dockerfile如下:

HEALTHCHECK --interval=5s --timeout=ss --retries 3 CMD curl stat /etc/passwd || exit 1

通過包含 HEALTHCHECK 的dockerfile構建出來的映象,在例項化容器的時候,就具備了健康狀態檢查的功能。


歡迎到微信裡去當吃瓜群眾