docker 定时重启脚本

您所在的位置:网站首页 关于九寨沟旅游攻略的博文文章 docker 定时重启脚本

docker 定时重启脚本

2023-03-14 01:00| 来源: 网络整理| 查看: 265

我有一个通用的VPS,并在其上使用Dockerising应用程序.它上面会有大约5-6个容器,而其他的很少,所以可以根据需要轻松地重建盒子.

对于每个应用程序,我有一个启动脚本. WordPress容器看起来像这样:

#!/bin/bash

# Get the host IP address

export DOCKER_HOSTIP=`ifconfig docker0 | grep "inet addr" | cut -d ':' -f 2 | cut -d ' ' -f 1`

echo "Connecting to database on Docker host ${DOCKER_HOSTIP}"

docker run \

--add-host=docker:${DOCKER_HOSTIP} \

--network dockernet \

--network-alias jonblog \

--detach \

--restart always \

--rm \

jonblog

但是,这会返回错误:

Conflicting options: –restart and –rm

有几个Docker门票说这是明智的,但我不明白.我认为我的意思很明确:如果一个容器没有运行(例如在启动时),那么我想启动它.如果它死了,那么我希望移除容器,并从基本图像创建一个新的容器.无论如何,容器应该是不可变的 – 我希望保留的任何状态,如媒体文件和日志,都将写入卷.

所以,我认为我应该删除–restart标志,然后使用进程管理器来停止和启动Docker容器.我可以在这里使用Monit吗?我希望能够做到这样的事情:

CHECK PROCESS jonblog MATCHING jonblog

START PROGRAM = "/root/docker/jonblog/host-start.sh"

STOP PROGRAM = "docker stop jon-blog"

但是,它会检查系统进程表,而不是docker ps,因此它不会找到与指定字符串匹配的内容.我可以定期执行docker ps,并匹配输出中的行吗?

我很乐意使用其他工具,如果它证明是健壮的.例如,我发现Supervisor有点重量级,但如果能够更好地使用Docker,我愿意使用它.

关于–rm的澄清

我想–rm的原因是在Dockerisation过程中,我停止当前运行的容器,加载新版本的映像,然后重新运行上面的脚本.这意味着Docker会收到有关每个容器的重启策略的通知.我发现在重启盒子之后,我会同时运行15个左右略有不同版本的应用程序,这不是意图.

我想我可以使用docker update –restart从不在旧容器上来防止这种情况发生,但是当我的容器停止时,我只是躺着它,我很快就会自动删除它.我可以使用某种cron作业定期清理旧版本,但考虑到Docker可以为我做这件事,这感觉有些笨拙.

寻求一系列答案

一个非常有用的评论建议我应该研究Minikube,它显然简化了Kubernetes的设置,甚至达到了一个技术熟练的人可以在五分钟内启动和运行的程度.

我仍然希望看到更多轻量级解决方案,所以我有一系列的答案可供选择.如上所述,我想找出像Monit这样的流程主管是否有效的答案.

脱离我的头顶,我可以编写一个shell循环来将docker ps写入文件,每隔五秒钟写一个文件,然后每分钟在Cron上运行一次.然后我可以使用grep和Monit CHECK PROGRAM系统检查来扫描该文件.这有点笨拙,但如果有问题,我可以轻松理解.有关该建议的任何进展?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3