zdq0394.github.com

Tech study and research.

Follow me on GitHub

HEALTHCHECK

HEALTHCHECK指令有两种形式:

  • HEALTHCHECK [OPTIONS] CMD command (check container health by running a command inside the container)
  • HEALTHCHECK NONE (disable any healthcheck inherited from the base image)

HEALTHCHECK指令通知Docker如何测试一个容器是否还在运行,比如一个web container,web服务器陷入了无限循环不能接受新的请求。

如果一个容器配置了healthcheck,在它正常的状态之外,会多出一个health status。

HEALTH STATUS:

  • starting:初始化状态
  • healthy:检查通过
  • unhealthy:连续失败一定的次数(retries)

可以出现在CMD之前的OPTIONS包括:

  • –interval=DURATION (default 30s)
  • –timeout=DURATION (default 30s)
  • –start-period=DURATION (default 0s)
  • –retries=N (default 3)

第一次运行是在contaier is started之后的interval秒后。然后每次间隔interval秒,直到成功或者超过重试次数。

如果一次check时间超过timeout,则认为本次check失败。

如果连续失败retries,则容器状态为unhealthy。

start-period提供了容器启动的时间。 这个时间段之内的失败不会记入失败次数。 如果这个时间段内测试成功了,则认为容器是”started”,那么随后进入测试阶段,如果测试失败,则会计入失败次数。

HEALTHCHECK指令只能出现一次,如果出现多次,只有最后一次生效。