我一直在尝试设计一种使用 Docker Swarm 来管理一堆无头容器的策略 - 不需要负载均衡器、公开任何端口或自动扩展。
我唯一想要的是能够更新所有容器(在所有节点上(,如果任何图像被更新。每个运行的容器都需要具有特定的--hostname
。
运行docker service
甚至可行吗?还是我应该只针对特定节点执行常规docker run
以指定我想要的--hostname
?我什至询问docker service
的原因是因为它允许您进行更新(如果有更新的映像,则强制更新所有容器(。
还认为 Docker Swarm 会更容易关注所有容器(即从中心位置管理它们(。
我正在考虑的另一个选择是瞭望塔,在运行其中一个容器的每个服务器上运行,作为 swarm 的替代方案。我唯一的问题是它不提供任何业务流程,用于集中管理。
鉴于这种情况,任何人都对更好的选择有任何想法吗?
除了docker service
命令之外,Docker swarm 在滚动更新方面没有任何优势,swarm 只为用户提供水平扩展,并在这些副本前面放置一个负载均衡器称为"服务",以及其他一些好东西,例如跨 swarm 节点复制 docker 事件。
docker service --force
将按预期工作。
但是,您可能应该同时使用docker swarm进行编排,watchtower用于滚动更新。