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

Does Docker support restarting containers every X seconds

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

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

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

如果您的容器成功退出,它将立即重新启动--restart=always

An ever increasing delay (double the previous delay, starting at 100 milliseconds) is added before each restart to prevent flooding the server. This means the daemon will wait for 100 ms, then 200 ms, 400, 800, 1600, and so on until either the on-failure limit is hit, or when you docker stop or docker rm -f the container.

我猜这是你的部分:

If a container is successfully restarted (the container is started and runs for at least 10 seconds), the delay is reset to its default value of 100 ms.

您可以做的是:

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