docker服务更新与docker堆栈部署与现有的堆栈

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

我使用的是Docker 17.03.1-ce

Docker堆栈部署文档说:“从群上的一个组合文件或一个DAB文件创build和更新一个堆栈,这个命令必须以一个pipe理器节点为目标运行。 所以你描述的行为是预期的。

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

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