我使用标准的swarm文档设置了一个带有1个管理器和2个工作节点的3节点集群(不能访问Internet )。
群组模式下的群组管理器如何知道工作节点中存在的映像?
假设我在worker-node-1中有图像A,在worker-node-2中有图像B,在manager-node中没有图像。
现在如何使用管理器启动镜像A的容器?它将从管理器还是从node-1开始?
当我查询管理器的图像列表时,它会给出包含A和B的整个列表吗?
有人知道这是怎么回事吗?我无法从文档中获得详细信息。
发布于 2018-10-19 06:28:42
Docker Swarm管理器节点可以通过第二个角色成为一个工人,但不是绝对必要的。
映像部署策略通过docker-compose.yml进行映射,其中包含与特定服务相关的目标节点、网络、主机名、卷等信息。因此,它将在指定的节点或最空的默认节点中启动。
Swarm manager通过Docker网络与工作节点通信:
初始化群或将Docker主机加入现有群时,将在该Docker主机上创建两个新网络:
在Swarm部署期间,其服务的镜像将根据其部署策略传播到工作节点。
一旦管理器节点也是工作者节点,该节点将包含图像(如果不是,请纠正我)。
发布于 2018-10-19 07:38:03
群组模式的默认配置是从注册表服务器中提取映像,并使用固定来引用这些映像的唯一哈希。这是可以调整的,但没有在集群中分发映像的内部机制。
对于离线环境,我建议集群可以访问独立的注册表服务器。您甚至可以在集群上运行它。将您的镜像推送到那里,并将您的服务器l服务指向注册表,以获取它们的镜像。有关运行独立注册表或许多第三方选项(例如港口)的详细信息,请参阅此文档:https://docs.docker.com/registry/
另一种选择是禁用图像固定,并手动将图像复制到每个群节点。您需要在部署任何服务更改之前执行此操作。当您手动复制图像层时,还会失去重用图像层的好处。由于它产生了所有这些问题,管理开销和出错的风险,我建议不要使用此选项。
发布于 2018-10-19 17:06:34
使用--with-registry-auth运行docker stack deploy命令,该命令将为工作进程提供获取所需映像的权限
默认情况下,Docker Swarm将在部署时从注册表中拉出最新的镜像
https://stackoverflow.com/questions/52881107
复制相似问题