当我有 docker 运行 个现有容器时,我可以启用 docker 群吗?

Can I enable docker swarm when I have an docker running existing containers?

我有一个现有的 docker 引擎 运行 大约有 15 个容器。它实际上是一个生产系统,所以我不能破坏当前的容器。

但作为更改的一部分,我正在考虑在其中一些容器上创建新的分布式基础架构,我需要使用 3 个虚拟机,由于资源原因,它被选择使用现有的 docker加入我们正在设置的新 docker swarm 集群的实例,以及 运行 单个容器 - 实际上是 Elasticsearch 设置中的仲裁节点。

问题是我们目前没有可以测试它的环境,我们现在需要避免破坏现有系统。

是否可以在已经 运行 的 docker 实例上启用 swarm,它会影响现有容器吗?

即使docker支持我也绝不会那样做:)。但是,如果您没有任何其他堆栈,那么我们必须这样做。
您是否在 daemon.json 文件中配置了实时恢复?像下面?

{ "live-restore": true }

如果是这样,那么您就可以开始设置群节点了。然后慢慢 运行 相同容器的另一个实例并将它们包含到节点中。一旦这个设置很好,就可以将流量路由到你的新设置并手动关闭旧容器。上述选项确保守护进程的任何更新、崩溃或重启都不会导致您的 运行ning 容器崩溃。


如果你没有上面的配置,添加它然后做systemctl reload docker。请记住不要重新启动守护程序,只需重新加载即可。然后按照上面的步骤。
这些是我现在可以为您想到的选项。将返回是否有任何其他框架支持此。

我能够在 3 个独立的虚拟机中对此进行测试,这些虚拟机在 Azure 上复制了类似的工作条件并且它成功运行。它可能并不理想,如 中所述,但我认为它解决了我现在遇到的问题。