docker服务更新vs docker堆栈使用现有堆栈进行部署

Ale*_*isi 6 docker docker-swarm-mode

在使用部署了一组服务后,我对使用docker swarm模式命令更新现有服务有疑问docker stack deploy。据我了解,每个服务在创建时都固定在映像的SHA256摘要中,因此,如果您重建并推送映像(具有相同标签)并且尝试运行docker service update,则不会更新服务映像(即使SHA256)是不同的)。相反,如果docker stack deploy再次运行,则所有服务都将使用新映像进行更新。我也通过使用来更新了服务映像docker service update --image repository/image:tag <service>。这是这些命令的正常行为,还是我不了解的东西?

我正在使用Docker 17.03.1-ce

her*_*erm 5

Docker 堆栈部署文档说:“从 swarm 上的 compose 或 dab 文件创建和更新堆栈。必须针对管理器节点运行此命令。” 因此,您描述的行为符合预期。

Docker 服务更新文档不是很清楚,但你自己说它只运行,--image repository/image:tag <service>所以这个标志是更新镜像所必需的。

你有两种方法来完成你想要的。