如何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自己的基础映像 。