如何在docker swarm中保持容器状态

时间:2018-02-21 08:19:07

标签: docker containers dockerfile docker-swarm

这个问题有点概念......

我开始服务,

Docker在此服务的节点上运行容器,

我在这个容器上取得进展,

由于某些容器获得异常,因此进入无法恢复的状态......

此时,我无法手动管理那个容器或容器(例如,恢复它,停止 - 启动),因为Swarm是容器的管理器。

保持容器状态的最佳做法是什么?有" docker容器提交"例如,我应该找到哪个节点容器启动,找到他们的容器id并手动提交它们?我应该为此目的定义cron作业。否则,我不应该依赖Docker进行此类应用吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

与Oliver建议的一样,您拥有的任何持久数据都应存储在泊坞窗卷中,可能使用泊坞窗volume driver from the Store like REX-Ray

您的设置应该有三个总体目标:

  1. 容器本身是短暂的。它可以被Swarm破坏并重新创建,当它崩溃并且没有任何东西丢失时。
  2. 在容器运行时唯一修改的任何文件都存储在docker卷中,以便在Swarm重新创建它时可以将它们正确地附加到新容器。如果它是一个多节点Swarm,您将需要共享存储以及诸如REX-Ray或Cloudstor驱动程序之类的东西,以便将卷重新连接到失败后重新创建容器的任何位置。
  3. 您的Swarm服务需要healthchecks。这就是Swarm如何知道它们是否处于不良状态并且需要被杀死并用新容器替换的方式。
  4. 当你结合这三个原则时,它会让Swarm解决你的状态和正常运行时间问题。