zoukankan      html  css  js  c++  java
  • docker HealthCheck健康检查

    需求

    最近遇到的问题:线上跑的一个 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
    

    命令显示:

    1. 在运行的,状态为 up
    2. 正常停止的,状态为 Exited (0)
    3. 因发生故障停止了,退出代码为非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

  • 相关阅读:
    luogu1060开心的金明
    luogu1048采药
    uva1025城市里的间谍
    scoi刷题记录(2019/04/07)
    差分及树上差分的正确食用姿势(2019/2/21学习笔记)
    图论技巧(2019/1/28之一)
    考试反思(2019/1/26学习笔记)
    考试反思(2019/1/22)
    「一本通 5.2 例 5」皇宫看守
    「一本通 5.2 例 3」数字转换
  • 原文地址:https://www.cnblogs.com/fsckzy/p/11835210.html
Copyright © 2011-2022 走看看