我一直在尝试设计一种使用Docker Swarm管理一堆无头容器的策略-不需要负载平衡器,暴露任何端口或自动缩放。
我唯一想要的就是能够更新所有容器(在所有节点上)的功能,如果有任何图像已更新。每个运行的容器都需要具有特定的--hostname
。
为此运行docker service
是否可行?还是应该只针对特定节点进行常规的docker run
来指定我想要的--hostname
?我什至询问docker service
的原因是因为它允许您进行更新(如果有更新的图像,则强制对所有容器进行更新)。
还认为Docker Swarm将使监视所有容器(即从中央位置进行管理)变得容易一些。
我正在查看的另一个选项是watchtower,它可以在运行其中一个容器的每台服务器上运行,以作为群集的替代方法。我唯一的问题是它不提供任何用于集中管理的业务流程。
任何人都认为在这种情况下哪种方法更好?
答案 0 :(得分:2)
除docker service
命令外,Docker swarm在滚动更新方面没有任何优势,swarm仅向用户提供水平扩展,并将负载均衡器放在称为“ service”的那些副本的前面。其他好处,例如在群集节点之间复制docker事件。
docker service --force
将按预期工作。
但是,您可能应该同时使用docker swarm进行编排和使用守望台进行滚动更新。