首页 > 资讯 > Docker 容器健康检查的指令方式详解

Docker 容器健康检查的指令方式详解

正文

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 服务器是否能在三秒内为站点的主页提供服务:

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