共计 1279 个字符,预计需要花费 4 分钟才能阅读完成。
Docker 容器健康检查指的是在 Dockerfile 中应用 HEALTHCHECK
指令对容器的运行状态进行查看,
并在 docker ps
的 STATUS 栏显示 healthy/unhealthy。
HEALTHCHECK
指令有两种格局:
HEALTHCHECK [OPTIONS] CMD command
(通过在容器内运行命令查看容器的衰弱状态)HEALTHCHECK NONE
(禁用从根底镜像中继承任何健康检查)
HEALTHCHECK
指令通知 Docker 如何测试一个容器,以查看它是否仍在工作。
这能够检测到一些状况,例如 web 服务器陷入有限循环,无奈解决新的连贯,即便服务器过程仍在运行。
当容器指定了健康检查时,除了失常状态外,它还具备衰弱状态。此状态初始为 starting
。
只有健康检查通过,它就会复原到 healthy
(无论它以前处于什么状态)。在间断失败肯定次数后,它就会变得 unhealthy
。
CMD
之前能够呈现的选项有:
- –interval=DURATION(默认:30s)
- –timeout=DURATION(默认:30s)
- –start-period=DURATION(默认:0s)
- –retries=N(默认:3)
运行状态查看首先会在容器启动后的 interval
秒内运行,而后在前一次查看实现后的 interval
秒内再次运行。
如果一次状态查看破费的工夫超过 timeout
秒,则认为这次查看失败。
容器的运行状态查看间断失败 retries
次才会被视为不衰弱。
start period
为须要工夫启动的容器提供初始化工夫。在此期间的探测失败将不计入最大重试次数。
然而,如果在启动期间健康检查胜利,则认为容器已启动,所有间断失败的状况都将计算到最大重试次数。
Dockerfile 中只能有一个 HEALTHCHECK
指令。如果列出多个,则只有最初一个 HEALTHCHECK
才会失效。
CMD
关键字前面的命令能够是 shell 命令(例如 HEALTHCHECK CMD /bin/check-running
)或 exec 数组(与其余 Dockerfile 命令一样,无关详细信息,请参见 ENTRYPOINT
)。
command
的退出状态示意容器的衰弱状态。可能的值是:
- 0:胜利 – 容器运行良好,能够应用
- 1:不衰弱—- 容器不能失常工作
- 2:保留 – 不应用此退出码
例如,每五分钟左右查看一次 web 服务器是否能在三秒内为站点的主页提供服务:
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1
为了帮忙调试失败的探测,command
写在 stdout 或 stderr 上的任何输入文本(UTF- 8 编码)都将存储在衰弱状态中,并且能够通过 docker inspect
进行查问。
这样的输入应该放弃简短(目前只存储前 4096 个字节)。
当容器的衰弱状态发生变化时,将生成一个具备新状态的 health_status
事件。
原文链接:https://goworker.cn/posts/docker-container-healthcheck/