我有一个Docker的部署设置,其工作方式如下:
>通过Dockerfile在我的开发机器上构建映像
>将图像推送到注册表(我尝试了Docker Hub和Quay.io)
>将此映像拉到部署服务器,然后重新启动容器.
我想尽快完成这些步骤,但是他们需要花费相当长的时间.即使是适度大小的图像(750MiB,包括标准的ubuntu和朋友),经过一些小的修改,部署也需要17分钟.我优化了Dockerfile中项目的顺序,因此它实际上大部分时间都会触及缓存的图像.这似乎没有什么区别.
主要罪魁祸首是码头推进步骤.对于Docker Hub和Quay.io来说,推送图像需要不切实际的长时间.在我做的一个简单基准测试中,我执行了两次背靠背的docker push,因此所有以前的图像都已经在注册表中.所以我只看到这些线条:
...
bf84c1d841244f: Image already pushed, skipping
...
但是,如果我推动时间,表现是可怕的.当所有图像都在服务器上时,推送到Quay.io需要3.5分钟!推送Docker Hub大约需要12分钟!
显然有些地方出了问题,因为许多人在生产中使用Docker,这些时间恰好与持续交付相反.
如何让这个运行得更快?其他人也看到这种表现吗?它是否与注册表服务有关,或者与我的本地机器有关?
我在Mac OS X下使用Docker.
最佳答案 因此,组织通常在本地网络上运行自己的注册表.这也使组织能够控制自己的数据,并避免依赖外部服务.
您还会发现Google Container Engine和Amazon Container Service等云主机提供托管注册表,以便为用户提供快速的本地下载.