【Docker】容器服务监控

Docker 提供了 HealthCheck 的功能。我们可以指定一个命令来检查服务是否启动成功,并通过结束代码来通知 Docker 启动情况。

#! /bin/bash
count=`ps -ef |grep python |wc -l`
# 正常情况,容器启动后,会有7个以上进程监控redis,用以接收图谱平台传递过来的任务
# 错误:
# 1,当服务器资源被占满,系统会强制kill掉占用资源较多的进程,造成图谱任务执行异常
# 2,是否会有其他情况导致监控进程停止,未知,待确认
# gt大于 当监控进程大于6的时候,证明nlp算法容器正常运行,否则异常,容器应重启
if [ $count -gt 6 ]
then
        #代码0表示服务启动成功
        exit 0
else
        #代码1表示启动失败或者未启动完毕
        exit 1
fi

docker run 示例【来源网络】

$ docker run  -d \
    --name=myweb \
    --health-cmd="curl -fs http://localhost/ || exit 1" \
    --health-interval=5s \
    --health-retries=12 \
    --health-timeout=2s \
    nginx:1.23

 

  • --health-cmd string:运行检查健康状况的命令
  • --health-interval duration:运行间隔时间(ms|s|m|h)(缺省为0s)
  • --health-retries int:需要报告不健康的连续失败次数
  • --health-start-period duration :容器在开始健康重试倒计时之前初始化的起始周期(ms|s|m|h)(默认0)
  • --health-timeout duration:允许一次检查运行的最大时间(ms|s|m|h)(默认为0s)
  • --no-healthcheck:禁用任何容器指定的HEALTHCHECK,会使得Dockerfile构建出来的HEALTHCHECK功能失效。

编辑示例,当容器服务重现异常时,容器重启

sudo docker run --restart=always --name=[ContainerName] \
--privileged=true \
-it --network="host" \
--env=LANG=C.UTF-8 \
--health-cmd="/bin/bash /code/healthcheck.sh" \
--health-interval=5m \
--health-retries=3 \
--health-timeout=2s \
。。。
-w [工作目录] \
[镜像] \

 

你可能感兴趣的:(docker,容器,运维)