监控docker所有容器,任意一个容器关闭自动重启

自动监控docker服务是否正常,若docker服务奔溃自动重启,监控docker所有容器状态,任何一个容器离线都会自动重启。

#!/bin/bash
#获取docker服务进程
docker_id=`ps -ef | grep -v grep | grep /usr/bin/dockerd | wc -l`
#判断docker服务是否存在
if [ $docker_id -gt 0 ];
then
#   echo "docker is runing!"
    true
else
   systemctl start docker
fi

# 获取所有容器ID
CONTAINER_IDS=$(docker ps -aq)
# 循环监控所有容器
for id in $CONTAINER_IDS
do
        # 获取容器名称
        CONTAINER_NAME=$(docker inspect --format='{{.Name}}' $id | awk -F / '{print $2}')

        # 检查容器是否在运行
        RUNNING=$(docker inspect --format="{{.State.Running}}" $id)

        # 如果容器不在运行状态,启动容器
        if [ "$RUNNING" != "true" ]; then
                echo "Container $CONTAINER_NAME is not running. Restarting now..."
                docker start $id
        fi
done

# 等待10秒后重新检查所有容器状态
#sleep 10

# 重新调用脚本自身,实现循环监控
#sh /a/docker-monitor.sh

exit 0

按容器名称监控,容器关闭自动重启。

CONTAINER_NAME="my-httpd"

if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
    echo "$CONTAINER_NAME container is already running"
else
    # 如果容器没有运行则启动它
    echo "$CONTAINER_NAME container is not running, starting it now"
    docker start $CONTAINER_NAME
fi
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值