博客
关于我
极速体验docker容器健康
阅读量:414 次
发布时间:2019-03-06

本文共 1403 字,大约阅读时间需要 4 分钟。

Docker容器健康检查实践体验

关于容器健康检查

在Docker环境中,Spring Boot应用的容器可能会因为数据丢失、资源耗尽等异常情况而无法提供服务。此时,需要一种快速检测容器健康状态的方法。Docker的健康检查功能(HEALTHCHECK)正好解决了这一问题。只要容器按照Docker规则提供自身状态信息,就可以将健康信息告知外界。

版本要求

Docker官方文档指出,HEALTHCHECK功能从版本1.12开始提供。以下是docker社区版的版本简介:

  • 1.12版本(2016年7月28日发布):标志着健康检查功能的诞生。
  • 1.13.1版本(2017年2月8日发布):Docker版本命名规则转变为“YY.MM”格式。
  • 17.03.0-ce版本(2017年3月1日发布):正式采用“YY.MM”版本命名。
  • 19.03.2版本:用于本次实战,确保功能兼容。

实战环境信息

  • 操作系统:macOS Catalina 10.15
  • Docker版本:19.03.2

开始体验

运行以下命令创建一个带有健康检查信息的容器:

docker run --rm --name=healthcheck -p 8080:8080 --health-cmd="curl --silent --fail localhost:8080/getstate || exit 1" --health-interval=15s --health-retries=10 --health-timeout=5s bolingcavalry/dockerhealthcheck:0.0.1-SNAPSHOT

参数说明

  • health-cmd:指定容器内执行的命令,用于检查健康状态。
  • health-interval:每次健康检查的间隔时间,默认30秒。
  • health-retries:连续失败次数,默认为3。
  • health-timeout:超时时间,默认30秒。

实施步骤

  • 使用curl命令向容器的8080端口发送HTTP请求。
  • 若响应码为200,返回值为0,Docker判定容器健康。
  • 若响应码不为200,返回值为1,Docker判定容器不健康。

查看容器状态

运行docker ps查看容器状态,初始状态为health: starting,待后续检查为healthy状态。

容器日志观察

镜像提供了localhost:8080/getstate接口,用于返回容器状态。每次调用会在控制台打印日志,显示状态信息。

模拟不健康状态

  • 调用localhost:8080/setstate?state=false接口,getstate返回码变为403。
  • 观察控制台日志,step probe return fail出现,表示容器不健康状态。

健康状态恢复

调用localhost:8080/setstate?state=true接口,getstate返回码恢复为200,容器健康状态重新变为healthy

观察容器事件

运行docker events --filter event=health_status,查看宿主机上所有容器健康状态事件。通过切换接口状态,可以观察到健康状态变化的事件记录。

总结

通过本次实践,我们对Docker容器健康检查功能有了深入了解。接下来,我们将在后续文章中详细介绍如何在自己的应用容器中集成这一功能。

转载地址:http://matkz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现ripple adder涟波加法器算法(附完整源码)
查看>>
Objective-C实现RodCutting棒材切割最大利润算法(附完整源码)
查看>>
Objective-C实现Romberg算法(附完整源码)
查看>>
Objective-C实现round robin循环赛算法(附完整源码)
查看>>
Objective-C实现RRT路径搜索(附完整源码)
查看>>
Objective-C实现rsa 密钥生成器算法(附完整源码)
查看>>
Objective-C实现RSA密码算法(附完整源码)
查看>>
Objective-C实现runge kutta龙格-库塔法算法(附完整源码)
查看>>
Objective-C实现segment tree段树算法(附完整源码)
查看>>
Objective-C实现selection sort选择排序算法(附完整源码)
查看>>
Objective-C实现sha256算法(附完整源码)
查看>>
Objective-C实现shell sort希尔排序算法(附完整源码)
查看>>
Objective-C实现SinglyLinkedList单链表算法(附完整源码)
查看>>
Objective-C实现skew heap倾斜堆算法(附完整源码)
查看>>
Objective-C实现Skip List跳表算法(附完整源码)
查看>>
Objective-C实现slack message松弛消息算法(附完整源码)
查看>>
Objective-C实现slow sort慢排序算法(附完整源码)
查看>>
Objective-C实现tanh函数功能(附完整源码)
查看>>
Objective-C实现z-algorithm算法(附完整源码)
查看>>
Objective-C实现zellers congruence泽勒一致算法(附完整源码)
查看>>