docker推动需要很长时间

我有一个Docker的部署设置,其工作原理如下:

  1. 通过Dockerfile在我的开发机器上构build一个映像
  2. 将图像推送到registry(我试过Docker Hub和Quay.io)
  3. 将此映像拉到部署服务器,然后重新启动容器。

我希望尽快完成这些步骤,但是需要花费很长时间。 即使对于尺寸适中的图像(750MiB,包括标准的ubuntu和朋友),经过小小的修改,也需要17分钟才能部署。 我优化了我的Dockerfile的项目顺序,因此大多数时候它实际上会碰到caching的图片。 这似乎没有什么差别。

主要的罪魁祸首是docker push步骤。 对于Docker Hub和Quay.io来说,推送图像需要很长的时间。 在我做的一个简单的基准testing中,我执行了docker push两次,所有以前的图像都已经在registry中。 所以我只看到这几行:

 ... bf84c1d841244f: Image already pushed, skipping ... 

但是如果我推的时候,performance是可怕的。 当所有图像已经在服务器上时,推送到Quay.io需要3.5分钟 ! 推到Docker Hub需要大约12分钟

在某个地方显然有些问题,因为很多人在生产中使用Docker,这些时间恰恰与持续交付相反。

我怎样才能让这个运行更快? 别人也看到这种performance吗? 它是否与registry服务有关,或者与我的本地机器有关?

我在Mac OS X下使用Docker。

为此,组织通常在本地networking上运行自己的注册pipe理机构。 这也使组织控制自己的数据,避免依赖外部服务。

您还会发现Google Container Engine和Amazon Container Service等云主机托piperegistry,为用户提供快速的本地下载。

是否在预览答案中说过,你应该使用你的本地registry。 安装和使用它并不是很难, 在这里你可以find信息,如何开始使用它。 这可能会更快,因为您不受限于提供商的上传速度限制。 顺便说一下,您可以随时将本地registry中的图像推送到Docker Hub或其他本地registry(例如,安装在您的客户networking中)。

还有一点,就持续集成和交付而言,我可以build议使用一些持续集成服务器,它可以在Linux操作系统上自动构build映像,而不需要使用boot2docker或docker-machine。 出于testing和开发的目的,您可以在本地构build您的图像,而无需推送到远程registry。