您现在的位置是:首页 >其他 >云原生之深入解析Docker容器的health健康状态检查网站首页其他
云原生之深入解析Docker容器的health健康状态检查
简介云原生之深入解析Docker容器的health健康状态检查
一、Docker 的原生健康检查能力
- 自 1.12 版本之后,Docker 引入了原生的健康检查实现。对于容器而言,最简单的健康检查是进程级的健康检查,即检验进程是否存活。Docker Daemon 会自动监控容器中的 PID1 进程,如果 docker run 命令中指明了 restart policy,可以根据策略自动重启已结束的容器。
- 在很多实际场景下,仅使用进程级健康检查机制还远远不够。比如,容器进程虽然依旧运行却由于应用死锁无法继续响应用户请求,这样的问题是无法通过进程监控发现的。
- 容器启动之后,初始状态会为 starting (启动中),Docker Engine 会等待 interval 时间,开始执行健康检查命令,并周期性执行。如果单次检查返回值非 0 或者运行需要比指定 timeout 时间还长,则本次检查被认为失败。如果健康检查连续失败超过了 retries 重试次数,状态就会变为 unhealthy(不健康)。
- 注:
-
- 一旦有一次健康检查成功,Docker 会将容器置回 healthy(健康)状态;
-
- 当容器的健康状态发生变化时,Docker Engine 会发出一个 health_status 事件。
二、Dockerfile 方式
- 可以在 Dockerfile 中声明应用自身的健康检测配置,HEALTHCHECK 指令声明了健康检测命令,用这个命令来判断容器主进程的服务状态是否正常,从而比较真实的反应容器实际状态。
- HEALTHC
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。