码头服务更新与码头堆栈部署与现有堆栈
我有疑问在使用码头群模式命令更新现有服务后部署了一套服务使用docker stack deploy
。 据我了解,每一项服务都被固定在创建时图像的SHA256摘要中,所以如果您重建并推送一个图像(使用相同的标签),并且您尝试运行docker service update
,则服务映像不会更新(甚至如果SHA256不同)。相反,如果您再次运行docker stack deploy
,则会使用新映像更新所有服务。 我设法通过使用docker service update --image repository/image:tag <service>
来更新服务映像。这是这些命令的正常行为,还是有我不明白的地方?码头服务更新与码头堆栈部署与现有堆栈
我使用泊坞17.03.1-CE
泊坞栈部署documentation说: “创建和更新从撰写或在群民建联文件堆栈这个命令来运行一个目标管理器节点“。 所以你描述的行为是预期的。
码头服务更新documentation是不是很清楚,但你自己说,它只能与--image repository/image:tag <service>
运行,所以国旗是必要的,以更新形象。
你有两种方法来完成你想要的。
docker stack deploy
将现有服务的图像更新为指定标记链接的任何散列值是正常的和预期的行为。
如果没有标签存在,假定latest
- 这有时可能是有问题的,因为latest
标签不能很好地被大多数人理解,并由此引发一些意想不到的结果。
中的说明,您能指出一些文章以更好地理解最新的标签或解释它吗?谢谢。 –
Hi @MarcoBlos,你可以从这些开始:https://medium.com/@mccode/the-misunderstood-docker-tag-latest-af3babfd6375,http://container-solutions.com/docker-latest-confusion/ 。 – demaniak
谢谢@demaniak。现在有更多关于这个问题的信息。 –
我只想了解docker stack deploy更新现有服务是否正常,或者它是一个错误。 –
该文档指出堆栈部署是为了创建和更新堆栈。所以这不是一个bug,它是一个功能:) – herm
很明显,我并不是在谈论“docker stack deploy”更新堆栈的事实,而是它更新了图像摘要的事实,与普通的“docker service update”相比, 。 –