容器的健康狀態檢查
阿新 • • 發佈:2018-12-29
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構建出來的映象,在例項化容器的時候,就具備了健康狀態檢查的功能。
歡迎到微信裡去當吃瓜群眾