首先我们来写一个脚本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