【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 [工作目录] \
[镜像] \

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每天都要有成长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值