Chr*_*sco 5 docker docker-swarm docker-stack portainer
在.yml定义中,我一直在拉latest我的服务形象。
当我将新映像推送到注册表时,我想更新堆栈中的服务使用的映像。我没有看到任何--pull标志,并且docker服务更新的文档中没有明确提及这一点。
如何使用最近推送的latest图像重新部署?
要添加Bret Fisher的答案,docker stack deploy -c compose-file.yml使用相同的compose-file.yml文件运行,并将图像标记为latest确实会比较图像的 SHA,并在需要时重新部署相应服务的图像。
这要归功于--resolve-imageDocker 17.09 中添加的标志,默认为always.
在测试它时,我发现如果需要的话它甚至会拉取最新的图像。
相关 GitHub 问题:https://github.com/moby/moby/issues/30951#issuecomment-342647614。
您真的不应该latest在生产中使用或在本地机器测试/学习之外使用任何东西。对于要使用的映像,这一切都变得模棱两可,而且您无法分辨docker service ls/ps默认情况下它是否是当前映像以及其他各种歧义(例如,在Docker Hub的GUI中看不到SHA)。
如果您无法解决,至少Swarm会尝试查询您的注册表并检查更新的SHA。如果看到一个,docker service update --image <username>/<repo> <servicename>则它将拉动并进行滚动更新。您可以观察docker events确定正在发生的事情,还可以docker service ps --no-trunc <servicename>用来事后检查并查看新旧图像的SHA哈希值。
如果您使用撰写文件来部署服务。我不建议使用此命令:
docker service update --image <username>/<repo> <servicename>
Run Code Online (Sandbox Code Playgroud)
这会导致您的文件过时并且不再是您的服务配置的记录来源。相反,按照 Bret Fisher 的建议,使用特定图像版本更新您的撰写文件,然后运行以下命令:
docker stack up -c </path/to/compose.yml> <servicename>
Run Code Online (Sandbox Code Playgroud)
如果其他人也在管理群体,保持有效记录很重要。
| 归档时间: |
|
| 查看次数: |
4642 次 |
| 最近记录: |