标签:重启 一个 curl 遇到 命令 接口 使用 访问 starting
最近遇到的问题:线上跑的一个 Node
镜像是在运行的,状态为 up
,但是访问报 502
,重启镜像无效,重新拉了个镜像运行才恢复正常。于是想研究下如何从应用层面去检查容器的状态
docker ps
STATUS
列显示容器的状态
[root@ansible ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cfb357dd83f 9962e62376bc "/bin/sh -c 'apk upg…" 3 months ago Exited (0) 3 months ago goofy_engelbart
91697fe789ee 3b6417bca798 "/bin/sh -c 'apk upg…" 3 months ago Exited (99) 3 months ago lucid_swirles
2004c9aa5efc 172.18.11.161/lzwd/jdk1.8:v1 "tini -- /bin/sh" 3 months ago Up 3 months elastic_proskuriakova
命令显示:
up
Exited (0)
Exited (99)
Exited (1)
即使是状态为 up
的状态,也不代表业务就是正常的。如我们遇到的就是,状态为 up
,访问却提示 502
。所以如何从应用层面去检查容器的状态呢?引出healcheck
对于 HTTP 服务接口的容器,使用 curl
检查 HTTP 状态码
例如每10分钟检测一次,超时5秒就报超时:
HEALTHCHECK --interval=10m --timeout=5s CMD curl --fail http://localhost:8080/ || exit 1
当指定了 healthcheck
指令启动容器后,初始状态会为 starting
,在 healtheck
指令检查成功后,状态会变为 healthy
,检查成功,状态会变成 unhealthy
标签:重启 一个 curl 遇到 命令 接口 使用 访问 starting
原文地址:https://www.cnblogs.com/fsckzy/p/11835210.html