[英]Health Check command for docker(1.12) container (Not in Dockerfile!)
Docker 版本1.12
,我从这里得到了一个Dockerfile
FROM nginx:latest
RUN touch /marker
ADD ./check_running.sh /check_running.sh
RUN chmod +x /check_running.sh
HEALTHCHECK --interval=5s --timeout=3s CMD ./check_running.sh
我可以使用check_running.sh
shell 脚本进行更新和运行状况检查。 在这里, check_running.sh
脚本被复制到image
,所以启动的容器有它。
现在,我的问题是有什么方法可以从容器外部进行健康检查,脚本也位于外部。
我正在排除一个健康检查命令来获取容器性能(取决于我们在脚本中编写的内容),如果容器性能不佳,它应该回滚到以前的版本(一种监视容器的过程,如果它不好,应该回滚到以前的)
谢谢
有什么方法可以从容器外部进行健康检查,脚本也位于外部。
一种监控容器的过程,如果不好,应该回滚到以前的
您有多种选择:
cat script.sh | docker exec -it container sh -s
东西cat script.sh | docker exec -it container sh -s
cat script.sh | docker exec -it container sh -s
。ps -Zax
或尝试查找守护进程的子进程),或者您可以给每个使用--user 12345
将特定用户 ID 容器化,然后查找该用户 ID 或例如连接到其服务。 您必须确保它在正确的容器内运行。 您可以在/var/lib/docker/devicemapper/mnt/<hash>/rootfs
下访问容器的文件系统。docker inspect --format='{{json .State.Health.Status}}' <containername>
结合例如 Dockerfile 中的一行来检查其健康状况: HEALTHCHECK CMD wget -q -s http://some.host
检查容器是否可以访问互联网。我推荐选项 3,因为它将来可能会与其他工具更兼容。
刚刚从博客上收到评论! 他参考了 Docker 文档HealthCheck部分。 有一个健康检查“选项”为docker
命令“覆盖”的dockerfile默认值。 我还没有检查!。 但是得到我想要的东西对我来说似乎很好。 将检查并更新答案!
这不适用于 Dockerfile HEALTHCHECK
选项,所有检查都在容器内运行。 对我来说,这是一件好事,因为它避免了直接在主机上运行的潜在不受信任的代码,并且它允许您在容器中包含运行状况检查的依赖项。
如果您需要从外部监控容器,则需要使用其他工具或监控应用程序,其中有很多。
您可以通过在容器上运行docker inspect
来查看健康检查的结果。
另一种取决于您的应用程序的方法是公开健康检查也会探测的/healthz
端点,这样可以根据需要在外部或内部查询。
Docker inspect 命令可让您查看成功或失败的命令的输出
docker inspect --format='{{json .State.Health}}' your-container-name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.