其他分享
首页 > 其他分享> > Dockerfile(12) - HEALTHCHECK 指令详解

Dockerfile(12) - HEALTHCHECK 指令详解

作者:互联网

HEALTHCHECK

作用

 

格式

# 设置检查容器健康状况的命令
HEALTHCHECK [选项] CMD <命令>

# 如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
HEALTHCHECK NONE

记住选项后面是接 CMD 哦

 

注意

和 CMD, ENTRYPOINT 一样,HEALTHCHECK 只可以出现一次,如果写了多个,只有最后一个生效

 

HEALTHCHECK 返回值

决定了该次健康检查的成功与否:0:成功;1:失败;2:保留(不要使用这个值)

 

为啥要用 HEALTHCHECK

 

HEALTHCHECK 支持的选项

 

实际小栗子

假设有个镜像是个最简单的 Web 服务,希望增加健康检查来判断其 Web 服务是否在正常工作,可以用 curl 来帮助判断其

dockerfile

FROM nginx
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
HEALTHCHECK --interval=5s --timeout=3s \
  CMD curl -fs http://localhost/ || exit 1

如果返回 1 则退出

 

执行 docker build

$ docker build -f HEALTHCHEK.dockerifle -t myweb .

 

执行 docker run

docker run -d --name web -p 80:80 myweb

 

查看容器状态

docker ps

 

查看容器健康检查信息

为了帮助排障,健康检查命令的输出(包括 stdout 以及 stderr)都会被存储于健康状态里,可以用 docker inspect 来查看

> docker inspect --format '{{json .State.Health}}' web | python -m json.tool
{
    "FailingStreak": 0,
    "Log": [
        {
            "End": "2021-10-31T04:43:58.8446416Z",
            "ExitCode": 0,
            "Output": "<!DOCTYPE html>\n<html>\n<head>\n<title>Welcome to nginx!</title>\n<style>\nhtml { color-scheme: light dark; }\nbody { width: 35em; margin: 0 auto;\nfont-family: Tahoma, Verdana, Arial, sans-serif; }\n</style>\n</head>\n<body>\n<h1>Welcome to nginx!</h1>\n<p>If you see this page, the nginx web server is successfully installed and\nworking. Further configuration is required.</p>\n\n<p>For online documentation and support please refer to\n<a href=\"http://nginx.org/\">nginx.org</a>.<br/>\nCommercial support is available at\n<a href=\"http://nginx.com/\">nginx.com</a>.</p>\n\n<p><em>Thank you for using nginx.</em></p>\n</body>\n</html>\n",
            "Start": "2021-10-31T04:43:58.7591924Z"
        }
    ],
    "Status": "healthy"
}

 

标签:容器,12,--,HEALTHCHECK,指令,健康检查,docker,Dockerfile
来源: https://www.cnblogs.com/poloyy/p/15489102.html