docker和docker-compose 服务健康检测(healthcheck)

这篇具有很好参考价值的文章主要介绍了docker和docker-compose 服务健康检测(healthcheck)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

docker 的healthcheck产生的背景

docker 启动服务,容器里面变成UP了;但这时,还不能正常对外提供服务,对调用方表现是处于不可用状态,直接报错

若业务线涉及组件比较多,都是这种启动方式,验证影响业务服务的SLA

docker 服务启动设置 healthcheck的目的

为了规避上面的风险,docker在v1.12版本后添加了healthcheck功能,这个功能可以自定义容器监控状态的检测标准。

healthcheck 参数说明

docker 官方文档 healthcheck部分

Dockerfile reference | Docker Documentation

docker-compose 健康检查,devops,运维自动化,docker

    healthcheck:
      test: ["CMD-SHELL", "curl -sS 127.0.0.1:9200 || exit 1"] # 检测方式
      interval: 1m30s  # 多次检测间隔多久 (default: 30s)
      timeout: 10s # 超时时间 (default: 30s)
      retries: 3 # 尝试次数(default: 3)
      start_period: 40s # 容器启动后多久开始检测  (default: 0s)

docker 支持的 healthcheck种类

Docker 支持以下几种 healthcheck 类型:

  •  CMD: 

dockerfile

HEALTHCHECK CMD curl -f http://localhost/ || exit 1  

使用 cURL 对服务指定 URL 进行检查。

  •  CMD-SHELL: 

dockerfile

HEALTHCHECK CMD-SHELL "curl -f http://localhost/ || exit 1; echo healthy"

使用 Shell 脚本对服务进行检查。

  •  HTTP: 

dockerfile

HEALTHCHECK --interval=30s --timeout=3s \
  HTTP/1.1 GET /actors HTTP/1.1

使用 HTTP GET 请求指定 URL 对服务进行检查。

  •  TCP: 

dockerfile

HEALTHCHECK --interval=5m --timeout=3s \
TCP/9200

通过连接指定端口,使用 TCP ping 对服务进行检查。

  1. NONE: 不进行任何健康检查。

举个例子:

HEALTHCHECK NONE

总的来说:

  • CMD 和 CMD-SHELL 是最常用的两种方式,可以执行任意命令检查服务健康。
  • HTTP 是使用 HTTP API 检查服务健康。
  • TCP 是通过连接指定端口检查服务是否可达。
  • NONE 不进行任何健康检查。

CMD 和 CMD-SHELL健康检查方式

CMD 和 CMD-SHELL 是最常用的两种健康检查方式

CMD 和 CMD-SHELL 在 HEALTHCHECK 命令中的区别:

• CMD:

  • 使用 exec 执行
  • 使用 /bin/sh -c 执行命令
  • 只接收一条命令及其参数

• CMD-SHELL:

  • 使用 shell 执行
  • 多条命令需要使用 ; 分号隔开
  • 可以使用 shell 的所有功能,如变量、循环等

举个例子:

CMD:

HEALTHCHECK CMD curl -f http://localhost/ || exit 1

CMD-SHELL:

HEALTHCHECK CMD-SHELL "curl -f http://localhost/ || exit 1; echo healthy"

相同的健康检查命令,CMD 版本只执行一条 curl 命令,CMD-SHELL 版本执行两条命令:

  • curl 检查健康
  • echo healthy 输出 healthy 字符串

总的来说:

  • 如需执行简单的单条命令测量健康,使用 CMD
  • 如需执行复杂 Shell 脚本来测量健康,使用 CMD-SHELL

Dockerfile和docker-compose 启动服务使用healthcheck 实战

Dockerfile 启动服务使用healthcheck 实战

在Dockerfile里定义镜像的healthcheck可以应用用基于这个镜像的所有容器

# healthcheck
HEALTHCHECK --interval=5s --timeout=5s \
CMD curl -sS 'http://localhost:9200' || exit 1

docker-compose 启动服务使用healthcheck 实战

在docker-compose里定义healthcheck 可以针对当前服务下的所有容器进行检测

healthcheck:
  test: ["CMD-SHELL", "curl -sS 'http://localhost:9200' || exit 1"]
  interval: 5s
  timeout: 5s
  retries: 6

docker-compose yaml文件中添加完healthcheck后,添加服务依赖

注意:condition属性仅适用于在version: '3.2'及以上版本的docker-compose中。

在depends_on中,可以通过添加一个condition属性来指定服务之间的启动条件。该condition属性可以接受三个值:

condition: service_started 表示在依赖的服务启动之后,才启动本服务;
condition: service_healthy 表示在依赖的服务健康检查通过之后,才启动本服务;
condition: service_completed_successfully 表示在依赖的服务成功执行之后,才启动本服务。

使用实战:文章来源地址https://www.toymoban.com/news/detail-639759.html

    depends_on:
      mysql:
        condition: service_healthy

到了这里,关于docker和docker-compose 服务健康检测(healthcheck)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker---Docker-compose安装部署Samba服务

    1.拉取samba镜像:docker pull dperson/samba 2.升级docker-compose版本: 通过 docker-compose --version 查看版本: 进行升级: 至此基础环境准备完成。 文件内容如下: samba服务权限设置: 创建docker网络: 创建容器: 查看容器状态: 本地进行访问测试: 进入文件夹并登陆,账号密码为yam

    2023年04月15日
    浏览(32)
  • 微服务自动化docker-compose

    Docker Compose是一个用来定义和运行多个复杂应用的Docker编排工具。例如,一个使用Docker容器的微服务项目,通常由多个容器应用组成。那么部署时如何快速启动各个微服务呢,一个个手动启动?假如有上百个微服务呢,显然不现实,那么使用Docker Compose编排工具便可快速启动容

    2024年01月15日
    浏览(26)
  • 使用docker-compose做nginx服务

    目录 Docker Compose 可以轻松、高效的管理容器, 它是一个用于定义和运行多容器 Docker 的应用程序工具. 除了docker Compose还有一个技术k8s也能实现快速的部署。 可以一键启动,一键停止,非常方便 一.上传nginx配置文件 二.docker-compose安装与配置 1.上传文件 2.添加可执行权限 3.创建

    2024年02月10日
    浏览(31)
  • 微服务自动化.docker-compose

    kubernetes 也称为k8s,也是用于自动部署和管理容器应用程序的开源系统 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排 通过编写docker-compose文件可对多个服务同时进行启动/停止/更新(可定义依赖,按顺序启动服务) docker-compose将所管理的容器分为3层结

    2024年01月16日
    浏览(23)
  • 若依微服务docker-compose部署vuepress

    千寻简笔记已开源,Gitee与GitHub搜索 chihiro-notes ,包含笔记源文件 .md ,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个 Star ~

    2024年02月12日
    浏览(28)
  • 使用Docker-compose快速构建Nacos服务

    在微服务架构中,服务的注册与发现扮演着至关重要的角色。Nacos(Naming and Configuration Service)是阿里巴巴开源的服务注册与发现组件,致力于支持动态配置管理和服务发现。最近,一位朋友表达了对搭建一套Nacos开发环境的兴趣。先前,我们曾发布了一篇有关在Linux上直接部

    2024年01月24日
    浏览(41)
  • 基于docker,k8s 搭建服务(单体docker-compose编排)

    1、 yum -y install gcc yum -y instacc gcc-c++ 2、安装yum 工具 yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken 3、设置docker镜像仓库 阿里云 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 更改镜像仓库为阿里云 sed -i ‘s/download.docker.com/mirrors.aliyun.com/do

    2024年01月22日
    浏览(42)
  • 在Ubuntu系统上部署Docker和Docker-Compose服务(实战篇)

    在这篇文章中,我们将从查看防火墙状态开始,逐步引导大家完成Docker和Docker-Compose的安装、配置以及使用过程。通过学习这些关键步骤,你将更加熟练地运用容器技术,为未来的项目提供更便捷的开发和部署方案。 无论你是刚刚接触Docker的新手,还是希望进一步优化Docker在

    2024年01月17日
    浏览(29)
  • docker-compose自建RustDesk远程控制服务器

    github: rustdesk/rustdesk-server: RustDesk Server Program (github.com) 其中第16行【rustdesk.example.com】更改为本机centos服务器公网ip地址,或已正确解析并可访问的域名。 1、设置服务器系统防火墙放行相关端口 2、设置云服务器网卡安全组放行相关端口 把yml文件里改好的IP或域名,填写到使

    2024年01月20日
    浏览(56)
  • 新服务器基本环境下载conda + docker + docker-compose + git

    miniconda官方下载地址 这个版本是py3.11的 执行 下完后从新开一个命令行前面就有一个(base)说明你下载好了 docker下载 免密设置(输入后再输入一次密码即可)

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包