Linux

Shell脚本自动监控docker容器的状态

首先我们来写一个脚本root@server:~# cat docker_monitor.sh

#监控容器的运行状态
#容器名称  传入参数
containerName=$1
#当前时间
now=`date +"%Y-%m-%d %H:%M:%S"`
 
# 查看进程是否存在
exist=`docker inspect --format '{{.State.Running}}' ${containerName}`
if [ "${exist}" != "true" ]; then
    docker start ${containerName}
    #记录日志
    echo "${now} 重启docker容器,容器名称:${containerName}" >> /opt/docker_log/docker_monitor.log
fi

然后我们放到定时器cron里: 每分钟检查一次

crontab -e

 */1 * * * * sh /root/docker_monitor.sh e96393144986
 */1 * * * * sh /root/docker_monitor.sh 5942e21ab085

改进的脚本,我们可以传容器的名字. 当容器出问题时,我们可以根据容器名字删除这个容器,然后再用这个名字创建一个新的容器。注意:这个例子中,image镜像的名字 和 容器的名字是一样的

#监控容器的运行状态
#容器名称  传入参数
containerName=$1
#当前时间
now=`date +"%Y-%m-%d %H:%M:%S"`
 
# 查看进程是否存在
exist=`docker inspect --format '{{.State.Running}}' ${containerName}`
if [ "${exist}" != "true" ]; then
    docker rm ${containerName}
    docker run --name ${containerName} -d -p 9003:9003 ${containerName}
    #记录日志
    echo "${now} 重启docker容器,容器名称:${containerName}" >> /var/TrainPato/docker_monitor.log
fi
 */1 * * * * sh /root/docker_monitor.sh containerName