本文共 1403 字,大约阅读时间需要 4 分钟。
在Docker环境中,Spring Boot应用的容器可能会因为数据丢失、资源耗尽等异常情况而无法提供服务。此时,需要一种快速检测容器健康状态的方法。Docker的健康检查功能(HEALTHCHECK)正好解决了这一问题。只要容器按照Docker规则提供自身状态信息,就可以将健康信息告知外界。
Docker官方文档指出,HEALTHCHECK功能从版本1.12开始提供。以下是docker社区版的版本简介:
运行以下命令创建一个带有健康检查信息的容器:
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请求。运行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/