Docker Swarm,新机器在机器启动时不会拉取 'replicate' 服务的图像

Docker Swarm, New machine doesn't pull image of 'replicate' service when machine start

我在添加到我的 Swarm (Docker) 的机器上应该 运行 有 2 个服务,serviceG 和 serviceR,serviceG 处于全局模式,serviceR 处于复制模式。

当我添加一台新机器到docker swarm 时,serviceG 的镜像会自动拉取,但是serviceR 的镜像不会自动拉取。

如果我在另一台机器上删除了一个 serviceR 容器,图像将被拉到我的新机器上,然后容器现在可以在新机器上启动。

图像都存储在同一个存储库中。

我可以在机器启动时使用 Docker 拉取,但我希望在新机器加入 swarm 以获取服务 R 图像时自动完成拉取。

这是按设计运行的。 Swarm 模式不会过早地重新平衡 swarm 中的工作负载。这样做可能会导致工作负载重新安排到不稳定或发生故障的节点上,并且通常会导致服务可用性降低。

如果您需要手动强制滚动更新来重新平衡您的服务,您可以运行:

docker service update --force your_service_name

如果只想拉取镜像而不是运行,可以直接登录新节点,运行 docker pull your_image_name.