9

在使用docker stack deploy. 据我所知,每个服务在创建时都固定在图像的 SHA256 摘要中,因此如果您重建并推送图像(具有相同标签)并尝试运行 a docker service update,则服务图像不会更新(即使 SHA256是不同的)。相反,如果docker stack deploy再次运行,所有服务都将更新为新图像。我还设法通过使用docker service update --image repository/image:tag <service>. 这是这些命令的正常行为还是我不明白的地方?

我正在使用 Docker 17.03.1-ce

4

2 回答 2

5

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

Docker 服务更新文档不是很清楚,但您自己说过它只运行,--image repository/image:tag <service>因此需要标志来更新映像。

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

于 2017-04-03T11:15:37.260 回答
2

docker stack deploy将现有服务的图像更新为链接指定标签的任何哈希是正常和预期的行为。

如果不存在标签,latest则假定 - 这有时可能会出现问题,因为latest大多数人都不能很好地理解标签,从而导致一些意想不到的结果。

于 2018-02-08T18:09:31.677 回答