如何在docker push和docker pull中管理并发?

时间:2016-03-26 05:29:35

标签: docker

我有以下情况:

  • daemon_pulling从私有注册表运行docker pull映像的最后一个版本。
    • E.g。 docker pull localhost:5000/myimage:v1 #sha或图片ID:1234
  • daemon_pushing运行最后一个映像版本的docker push
    • E.g。 docker commit container_stable localhost:5000/myimage:v1 && docker push localhost:5000/myimage:v1 #sha或图片ID:6789

该代码可以很好地基于容器部署图像!

问题是dameon_pushing(sha或图片ID:6789)正在运行并同时运行daemon_pulling(sha或图片ID:1234),因为推送(6789)当使用泊坞窗拉(1234)并检测到本地更改(6789!= 1234)并尝试再次下载图像(1234)但我的上一张稳定图像正在推送(6789)...

我正在寻找一种推动方式,而不会影响进展,反之亦然。

管理此并发的更好方法是什么?

我尝试使用不同的Docker镜像名称作为数据透视表并直接在注册表服务器上重命名,但我没有找到远程重命名的方法(只是本地重命名)。

1 个答案:

答案 0 :(得分:1)

看起来您已经设置了CI构建来提取现有映像,从中运行容器并安装更新,将更改提交到相同的映像名称,然后将其推送回注册表。通过运行容器并提交到同一图像来连续更新图像并不是一种好的做法,因为它隐藏了更改,并使复制构建变得不必要地困难。

更好的方法是从Dockerfile构建图像,您可以在其中定义所有构建步骤。有关示例,请参阅Docker官方Continuous Integration use case上的参考架构。如果您想缩短构建时间,可以自己开始base image