如何pipe理docker push和docker pull中的并发性?

我有以下情况:

  • 运行docker的daemon_pulling从私有registry中获取图像的最新版本。
    • 例如, docker pull localhost:5000/myimage:v1 #sha或者image id:1234
  • 正在运行Docker的daemon_pushing docker push图像的最后一个版本。
    • 例如, docker commit container_stable localhost:5000/myimage:v1 && docker push localhost:5000/myimage:v1 #sha或者image ID:6789

代码工作正常,部署基于容器的图像!

问题是当dameon_pushing (sha或image id:6789)正在运行并且同时运行daemon_pulling (sha或image id:1234)时,因为在泊坞器拉(1234)时推动(6789)没有完成使用和检测本地变化(6789!= 1234),并尝试再次下载图像(1234),但我最后一个稳定的形象正在推动(6789)…

我正在寻找一种不受影响的推进方式,反之亦然。

什么是更好的方式来pipe理这种并发?

我尝试使用不同的Docker镜像名称作为枢轴,并直接在registry服务器上重命名,但我没有find一种方法来远程重命名(只是本地重命名)。

它看起来像你已经build立你的CI构build拉现有的图像,运行一个容器,并安装更新,提交更改为相同的图像名称,然后推回到registry。 通过运行容器并提交相同的图像来不断更新图像不是一个好习惯,因为它隐藏了更改,并且使复制构build不必要的困难。

更好的方法是从Dockerfile中构build图像,在其中定义所有构build步骤。 查看Docker官方持续集成用例的参考架构。 如果您想缩短构build时间,您可以创build自己的基础映像 。