首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更新docker服务/堆栈使用的最新映像?

如何更新docker服务/堆栈使用的最新映像?
EN

Stack Overflow用户
提问于 2018-06-20 04:10:14
回答 3查看 14.7K关注 0票数 7

.yml定义中,我总是拉取我的服务的latest镜像。

当我将一个新的镜像推送到注册表,并且我想更新我的堆栈中的服务使用的镜像时。我没有看到任何--pull标志,docker service update的文档也没有明确提到这一点。

如何使用最近推送的latest镜像重新部署?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-22 01:37:29

你真的不应该在生产中使用latest,或者在本地机器测试/学习之外的任何东西中使用它。它使你所使用的图片变得模棱两可,而且你不能在docker service ls/ps中辨别它是否是默认的当前图片,也不能区分所有其他的模棱两可的地方(比如在Docker Hub的图形用户界面中看不到SHA)。

如果你没有办法绕过它,至少Swarm会尝试查询你的注册表,并检查更新后的SHA。如果它发现一个带有docker service update --image <username>/<repo> <servicename>的,那么它将拉出并进行滚动更新。您可以查看docker events以确保正在发生的事情,您可以使用docker service ps --no-trunc <servicename>进行事后检查,并查看新旧图像的SHA散列。

票数 12
EN

Stack Overflow用户

发布于 2020-05-15 23:03:53

如果您使用组合文件来部署服务。我不建议使用以下命令:

代码语言:javascript
复制
docker service update --image <username>/<repo> <servicename>    

这会导致您的文件过期,并且不再是服务配置的记录源。取而代之的是,按照Bret Fisher的建议,使用特定的镜像版本更新您的合成文件,并运行以下命令:

代码语言:javascript
复制
docker stack up -c </path/to/compose.yml> <servicename>

如果其他人也在管理蜂群,保持有效的记录是很重要的。

票数 5
EN

Stack Overflow用户

发布于 2019-11-17 06:54:37

为了补充Bret Fisher的回答,使用相同的compose-file.yml文件运行docker stack deploy -c compose-file.yml,并将一个镜像标记为latest,这确实会比较镜像的SHA值,并在需要时重新部署相应服务的镜像。

这要归功于Docker17.09中添加的--resolve-image标志,该标志默认为always

在测试时,我发现如果需要的话,它甚至还会拉出最新的图像。

相关的GitHub问题:https://github.com/moby/moby/issues/30951#issuecomment-342647614

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50936208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档