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

 更新时间:2023年11月03日 11:31:52   作者:K8sCat  
这篇文章主要介绍了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 服务器是否能在三秒内为站点的主页提供服务:

HEALTHCHECK --interval=5m --timeout=3s \
  CMD curl -f http://localhost/ || exit 1

为了帮助调试失败的探测,command 写在 stdout 或 stderr 上的任何输出文本(UTF-8编码)都将存储在健康状态中,并且可以通过 docker inspect 进行查询。
这样的输出应该保持简短(目前只存储前4096个字节)。

当容器的健康状态发生变化时,将生成一个具有新状态的 health_status 事件。

以上就是Docker 容器健康检查的指令方式详解的详细内容,更多关于Docker 容器健康检查的资料请关注脚本之家其它相关文章!

相关文章

  • Docker搭建Minio容器的流程步骤(完整详细版)

    Docker搭建Minio容器的流程步骤(完整详细版)

    Minio 是一个基于Apache License v2.0开源协议的对象存储服务,虽然轻量,却拥有着不错的性能,它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,本文将给大家介绍Docker搭建Minio容器的流程步骤,需要的朋友可以参考下
    2024-08-08
  • docker部署运行jar全过程

    docker部署运行jar全过程

    这篇文章主要介绍了docker部署运行jar全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Docker容器日志查看与清理的方法(亲测有效)

    Docker容器日志查看与清理的方法(亲测有效)

    这篇文章主要介绍了Docker容器日志查看与清理的方法(亲测有效),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Docker构建Maven+Tomcat基础镜像的实现

    Docker构建Maven+Tomcat基础镜像的实现

    这篇文章主要介绍了Docker构建Maven+Tomcat基础镜像的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • docker根据已生成的容器生成docker-compose.yml文件的实现步骤

    docker根据已生成的容器生成docker-compose.yml文件的实现步骤

    这篇文章主要给大家介绍了docker 如何根据已生成的容器生成docker-compose.yml 文件,文中有详细的代码示例和实现步骤,对大家的学习有一定的帮助,需要的朋友可以参考下
    2023-10-10
  • docker pull报错unexpected EOF问题的解决方案

    docker pull报错unexpected EOF问题的解决方案

    在清理Docker私有仓库的垃圾镜像和缓存后,新推送到仓库的镜像会出现unexpectedEOF错误,这篇文章主要介绍了docker pull报错unexpected EOF问题的解决方案,需要的朋友可以参考下
    2025-04-04
  • Docker到底是什么?Docker为什么它这么火!

    Docker到底是什么?Docker为什么它这么火!

    Docker这种新的容器技术可谓热得发烫,因为有了它,人们就有可能让数量多得多的应用程序在同样的旧服务器上运行;有了它,人们也很容易封装和交付程序。本文旨在帮助你进一步了解Docker
    2015-12-12
  • 基于Docker部署Tomcat集群、 Nginx负载均衡的问题小结

    基于Docker部署Tomcat集群、 Nginx负载均衡的问题小结

    这篇文章主要介绍了基于Docker部署 Tomcat集群、 Nginx负载均衡,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Docker 中 MySQL 的部署与管理技巧

    Docker 中 MySQL 的部署与管理技巧

    这篇文章主要介绍了Docker 中 MySQL 的部署与管理技巧,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • Docker中安装ElasticSearch+Kibana+Logstash(ELK)实践记录

    Docker中安装ElasticSearch+Kibana+Logstash(ELK)实践记录

    文章介绍了如何使用Docker在本地安装和配置Elasticsearch、Kibana和Logstash(ELK堆栈),本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-03-03

最新评论