HEALTHCHECK指令有两种形式:
HEALTHCHECK指令告诉Docker如何测试一个容器来检查它是否工作正常。这个可以用来检测如web server陷入了死循环且已经无法处理新的连接了,即使server进程仍然在运行。
当一个容器设置了healthcheck之后,除了正常的状态,它多了一个health状态。这个状态初始为starting。当健康检查通过后,它变成了healthy(不管之前是什么状态)。当连续出现几次失败后,就变成unhealthy。
在CMD之前的选项有:
当容器启动之后,首先等待interval秒然后进行健康检查,然后等这次检查完成后再等interval秒之后继续再次检查,如此循环。
如果有一个检查所花的时间超过了timeout秒,那么就认为这次检查失败了。
如果连续retries次失败,就认为此容器状态为unhealthy。
Dockerfile中只能使用一个HEALTHCHECK指令,如果设置了多次,就取最后一个。
这个命令的CMD之后的命令可以是一个shell命令[如HEALTHCHECK CMD /bin/check-running]或者exec数组[像Dockerfile命令ENTRYPOINT使用的数组]。
命令退出状态表示容器的健康状态。可能的值为:
例如,隔5分钟检查一次容器确保web server能够在3秒内正常输出主页:
为了方便调查失败原因,检查命令的输出(UTF-8编码)会写到health状态中,并且可以通过docker inspect查看。输出应该尽量短,不大于4096字节。
HEALTHCHECK功能是在Docker 1.12添加的。