Docker 容器健康检查指的是在 Dockerfile 中使用 HEALTHCHECK 指令对容器的运行状态进行检查,
并在 docker ps 的 STATUS 栏显示 healthy/unhealthy。
HEALTHCHECK 指令告诉 Docker 如何测试一个容器,以检查它是否仍在工作。
这可以检测到一些情况,例如 web 服务器陷入无限循环,无法处理新的连接,即使服务器进程仍在运行。
当容器指定了健康检查时,除了正常状态外,它还具有健康状态。此状态初始为 starting。
只要健康检查通过,它就会恢复到 healthy(无论它以前处于什么状态)。在连续失败一定次数后,它就会变得 unhealthy。
首先会在容器启动后的 interval 秒内运行,然后在前一次检查完成后的 interval 秒内再次运行。
如果一次状态检查花费的时间超过 timeout 秒,则认为这次检查失败。
容器的运行状态检查连续失败 retries 次才会被视为不健康。
start period 为需要时间启动的容器提供初始化时间。在此期间的探测失败将不计入最大重试次数。
但是,如果在启动期间健康检查成功,则认为容器已启动,所有连续失败的情况都将计算到最大重试次数。
Dockerfile 中只能有一个 HEALTHCHECK 指令。如果列出多个,则只有最后一个 HEALTHCHECK 才会生效。
CMD 关键字后面的命令可以是 shell 命令(例如 HEALTHCHECK CMD /bin/check-running)或 exec 数组(与其他 Dockerfile 命令一样,有关详细信息,请参见 ENTRYPOINT)。
command 的退出状态表示容器的健康状态。可能的值是:
0:成功--容器运行良好,可以使用1:不健康—-容器不能正常工作2:保留--不使用此退出码例如,每五分钟左右检查一次 web 服务器是否能在三秒内为站点的主页提供服务:
1
2
HEALTHCHECK --interval=5m --timeout=3s
CMD curl -f http://localhost/ || exit 1
为了帮助调试失败的探测,command 写在 stdout 或 stderr 上的任何输出文本(UTF-8编码)都将存储在健康状态中,并且可以通过 docker inspect 进行查询。
这样的输出应该保持简短(目前只存储前4096个字节)。
当容器的健康状态发生变化时,将生成一个具有新状态的 health_status 事件。
以上就是Docker 容器健康检查的指令方式详解的详细内容,更多关于Docker 容器健康检查的资料请关注脚本之家其它相关文章!
原文链接:https://segmentfault.com/a/1190000039073943
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关知识
Docker安全性:最佳实践和常见安全考虑
Docker镜像瘦身技巧的新思路(基于chiselled Ubuntu)本文介绍一种docker image瘦身的技巧
使用 docker 部署 AspNetCore 应用:使用alpine镜像并加入健康检查和瘦身
[云原生] Kubernetes(k8s)健康检查详解与实战演示(就绪性探针 和 存活性探针)
k8s健康检查 spring k8s健康检查探针多个地址
《口腔健康调查 检查方法》标准解读
负载均衡SLB四层(TCP/UDP)健康检查出现异常的解决方法
健康检查项目详细分析
茹珺:产前检查项目详解:了解每一项检查的意义
医院特殊行业全面体检项目表:详解职业健康检查必备内容(附2024年版)
网址: Docker 容器健康检查的指令方式详解 https://m.trfsz.com/newsview905353.html