Swarm模式图像编排如何工作?

时间:2018-10-18 19:20:24

标签: docker docker-swarm docker-swarm-mode

我已经使用标准的swarm文档设置了一个由1个管理器和2个工作节点组成的3节点群集(无法访问Internet)。

处于群集模式的群集管理器如何知道工作节点中存在的图像?

假设我在worker-node-1中有图像A,在worker-node-2中有图像B,在manager-node中没有图像。

现在如何使用管理器启动图像A的容器? 它将从管理器或节点1开始吗?

当我查询管理器中的图像列表时,是否会给出带有A和B的整个列表?

有人知道这是怎么回事吗? 我无法从文档中获取详细信息。

3 个答案:

答案 0 :(得分:0)

Docker Swarm管理器节点可能是第二角色,但并非绝对必要。

图像部署策略通过docker-compose.yml进行映射,该策略具有与特定服务有关的信息,例如目标节点,网络,主机名,卷等。因此,它将在指定的节点或最空的默认节点中开始。

Swarm Manager通过Docker网络与工作节点通信:

  

初始化集群或将Docker主机加入现有集群时,将在该Docker主机上创建两个新网络:

     
      
  • 称为入口的覆盖网络,用于处理控制和数据   与群服务相关的流量。创建群服务时,   不要将其连接到用户定义的覆盖网络,而是连接到   默认情况下是入口网络

  •   
  • 一个称为   docker_gwbridge,它将各个Docker守护程序连接到   其他守护程序加入集群。

  •   
     

Reference

在Swarm部署期间,其服务的映像将根据其部署策略传播到工作程序节点。

一旦管理者节点也成为工作者节点,管理器节点将包含图像(如果没有,请纠正我)。

答案 1 :(得分:0)

群集模式的默认配置是从注册表服务器提取图像,并使用固定来引用这些图像的唯一哈希。可以调整,但是没有内部机制可以在群集内分发图像。

对于离线环境,我建议群集可以访问的独立注册表服务器。您甚至可以在集群上运行它。将映像推送到那里,然后将服务器服务指向注册表以将其映像拉出。请参阅此文档,以获取有关运行独立注册表的详细信息,或运行许多第三方选项(例如Harbor)的任何方法:https://docs.docker.com/registry/

另一个选项是禁用图像固定,并手动将图像复制到您的每个群集节点。您需要在部署任何服务更改之前执行此操作。当您手动复制图像图层时,您还将失去重用它们的好处。由于它产生的所有这些问题,管理开销和错误风险,我建议您不要使用此选项。

答案 2 :(得分:0)

使用docker stack deploy运行--with-registry-auth命令,这将使工作人员可以访问所需的图像

默认情况下,Docker Swarm会在部署时从注册表中提取最新映像