Docker是否支持每X秒重新启动一次容器

Docker是否支持每X秒重新启动一次容器,docker,cron,scheduled-tasks,restart,Docker,Cron,Scheduled Tasks,Restart,我有一个保持两个数据源同步的日志存储容器。当它运行时,它查询一个数据库中的非同步条目并将它们发布到另一个数据库中。我想每10秒运行一次这个容器 我一直在做的是指定--restart=always,这样当容器退出时,它会自己重新启动,大约需要5秒钟,这对于这个用例来说有点太频繁了 Docker是否支持我想要实现的目标(在重启之间等待X秒,或任何形式的调度),或者我是否应该删除重启策略并使用cron将其调度为每10秒运行一次?如果容器成功退出,它将立即使用--restart=always 每次重新启

我有一个保持两个数据源同步的日志存储容器。当它运行时,它查询一个数据库中的非同步条目并将它们发布到另一个数据库中。我想每10秒运行一次这个容器

我一直在做的是指定
--restart=always
,这样当容器退出时,它会自己重新启动,大约需要5秒钟,这对于这个用例来说有点太频繁了


Docker是否支持我想要实现的目标(在重启之间等待X秒,或任何形式的调度),或者我是否应该删除重启策略并使用cron将其调度为每10秒运行一次?

如果容器成功退出,它将立即使用
--restart=always

每次重新启动前都会添加一个不断增加的延迟(前一个延迟的两倍,从100毫秒开始),以防止服务器溢出。这意味着守护进程将等待100毫秒,然后等待200毫秒、400毫秒、800毫秒、1600毫秒等等,直到达到on故障限制,或者当docker停止或docker rm-f容器时

我想这是你的部分:

如果容器成功重新启动(容器启动并运行至少10秒),延迟将重置为其默认值100毫秒

您可以做的是:

  • 每隔10秒用cron重新启动容器
  • 在容器中配置一个cron,并每10秒启动一次logstash
  • 使用shell脚本,在循环中启动logstash,然后休眠10
  • 也许logstash已经内置了类似的东西?(例如,我知道jdbc输入插件有一些调度参数)

我将使用cron重新启动。但我也喜欢在docker entrypoint.sh中存在logstash后睡眠10秒,然后退出容器,这样当它立即重新启动时,10秒就会过去。我真诚地相信并支持容器应该尽可能地简单,尽可能地少做一些事情,这样我就不想让cron出现在我的Logstash容器中,而且我不能安排我正在使用的Logstash的输入/输出插件。我同意你的观点,我的一些建议显然是不好的做法,我只是希望尽可能详尽。您可以设置一个单独的链接容器来启动日志存储,管理日程安排,并在没有恢复时报告。通过这种方式,您可以保持使用容器的可移植性和主机抽象优势。另一种选择是将Logstash设置为服务器,并按计划对其运行查询,这也可能增加一些抽象的好处。