首页 > 其他分享 >Docker-compose容器服务异常重启脚本

Docker-compose容器服务异常重启脚本

时间:2023-08-15 11:35:47浏览次数:42  
标签:容器 compose CONTAINER yml COMPOSE Docker docker

前言:

有些企业可能并没有足够的能力或者没必要搭建(云上租用)一个K8S集群,会考虑使用Docker。

公司今年有个项目,一部分服务就是使用原来的,改改配置就能用,然后再配合实际的场景再新上1、2个服务。在云上再租用一个K8S集群或者自己搭建一个K8S集群就显得尤为浪费。但是有几个都是之前的服务就迁移一下就行了,所以我还是考虑容器,毕竟迁移方便嘛。所以采用了Docker-compose来管理Docker容器的方式。

在K8S中,可以配置健康检测探针,但是Docker-compose里面并没有。所以编辑了SHELL脚本来实现异常重启。


SHELL脚本:

#!/bin/bash

# docker-compose.yml 文件所在目录
COMPOSE_DIR="/opt/software/dun-tools-server"

while true; do
  # 检查所有容器状态
  for CONTAINER_NAME in $(docker-compose -f $COMPOSE_DIR/docker-compose.yml ps --services); do
    HEALTH_STATUS=$(docker inspect --format='{{json .State.Health}}' $(docker-compose -f $COMPOSE_DIR/docker-compose.yml ps -q $CONTAINER_NAME))
    if [[ "$HEALTH_STATUS" == *"\"Status\":\"unhealthy\""* ]]; then
      echo "$(date +%Y-%m-%d\ %H:%M:%S) - $CONTAINER_NAME is unhealthy, restarting..."
      docker-compose -f $COMPOSE_DIR/docker-compose.yml stop $CONTAINER_NAME
      docker-compose -f $COMPOSE_DIR/docker-compose.yml up -d $CONTAINER_NAME
    fi
  done

  # 每隔2分钟检查一次
  sleep 120
done


脚本作用展示:

使用nohup后台启动即可,看异常重启日志时可以查看nohup.out日志。

Docker-compose容器服务异常重启脚本_SHELL

因为这个程序对CPU资源消耗很大,都是关于计算的操作,但是该服务被开发出来时,最大又只能使用一个CPU,因此使用了多个节点,当某一个节点掉线时,通过上边的脚本能检测到(每120s检测一次),然后进行重启。只有我这边运维这边通过日志能看到哪个节点什么时间进行了重启,客户方无感。

标签:容器,compose,CONTAINER,yml,COMPOSE,Docker,docker
From: https://blog.51cto.com/u_14500227/7086507

相关文章

  • docker-compose启动开发环境
    前言经常需要搭建自己的环境,做个笔记。-操作系统:DeepinV23-Docker版本:24.0.5Gitee地址:链接启动准备1.配置Docker国内加速(配置完成重启docker)文件:/etc/docker/daemon.json{"registry-mirrors":["https://hub-mirror.c.163.com"]}2.命令行创建网络net-devdock......
  • docker环境下部署nginx
    ......
  • 知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装
    知识图谱(KnowledgeGraph)-Neo4j5.10.0Docker安装知识图谱(KnowledgeGraph)-Neo4j5.10.0CentOS安装https://neo4j.com/docs/operations-manual/5/docker/introduction/拉镜像[root@localhost~]#cat/etc/docker/daemon.json{"registry-mirrors":["http......
  • docker 安装rocketMQ和新版控制台
    docker安装rocketMQ和新版控制台参考文章:https://www.cnblogs.com/d1012181765/p/15603378.html1.拉取镜像#拉取镜像dockerpullrocketmqinc/rocketmq2.创建数据挂载目录mkdir-p/docker/rocketmq/data/namesrv/logs/docker/rocketmq/data/namesrv/storemkdir-p......
  • 在树莓派上使用Dockers运行Openwrt并作为主路由器的旁路由
    开启网卡混杂模式sudoiplinkseteth0promiscon首先需要新建一个/etc/rc.local并添加可执行权限sudotouch/etc/rc.localsudochmod+x/etc/rc.local内容如下:#!/bin/sh-e#/etc/rc.local##rc.local##Thisscriptisexecutedattheendofeachmultiuserrunlevel......
  • 基于Docker的PHP开发环境
     基于Docker的PHP开发环境【编者的话】本文作者是Geoffrey,他是一个PHP的Web开发者,喜欢DevOps和Docker。本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊。推荐PHP开发者阅读。 现在很多开发者都使......
  • Docker 基本管理
    Docker的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。 目录一、Docker概述二、Docker特点三、Docker与虚拟机的区别四、namespace的六项隔离五、Docker核心概念六、安装Docker     一、Docker概述1.docker......
  • list 容器(链表)
    1.list基本概念链表(list)是一种物理存储单元上的非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的;将数据进行链式存储。  是一个双向循环链表;链表由一系列结点组成;结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点的指针域;优......
  • Docker Dockerfile指令大全
    FROM-指定基础镜像指定基础镜像,并且Dockerfile中第一条指令必须是FROM指令,且在同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令。#语法格式FROM<image>FROM<image>:<tag>#如果不写<tag>则默认以latest为基准RUN-运行指定的命令构建镜像过程中需要执行的命令。......
  • DS CATIA Composer R2023(3D辅助设计软件) HF3中文永久使用
    DSCATIAComposerR2023是一款功能强大的3D辅助设计软件。点击获取DSCATIAComposerR2023 下面是对DSCATIAComposerR2023的800字详细介绍:DSCATIAComposerR2023是由达索系统(DassaultSystèmes)开发的一款专业的3D辅助设计软件。它为用户提供了创新的工具和功能,旨在......