【发布时间】:2015-10-28 14:20:53
【问题描述】:
我有一个使用 Docker 的部署设置,其工作方式如下:
- 通过 Dockerfile 在我的开发机器上构建映像
- 将镜像推送到注册表(我尝试了 Docker Hub 和 Quay.io)
- 将此镜像拉到部署服务器,然后重启容器。
我想尽快完成这些步骤,但它们需要很长时间。即使是大小适中的映像(750MiB,包括标准的ubuntu 和朋友),经过小幅修改后,也需要 17 分钟 来部署。我优化了我的Dockerfile 中的项目顺序,因此它实际上大部分时间都会命中缓存的图像。这似乎没有什么区别。
罪魁祸首是docker push 步骤。对于 Docker Hub 和 Quay.io 来说,推送镜像需要非常长的时间。在我做的一个简单的基准测试中,我连续执行了两次docker push,所以之前的所有图像都已经在注册表中了。所以我只看到这些行:
...
bf84c1d841244f: Image already pushed, skipping
...
但是,如果我对推送进行计时,那么性能将非常糟糕。当所有图像都已经在服务器上时,推送到 Quay.io 需要 3.5 分钟!推送到 Docker Hub 大约需要 12 分钟!
显然有些地方出了问题,因为很多人在生产中使用 Docker,这些时间与持续交付正好相反。
我怎样才能让这个运行更快?其他人是否也看到了这种表现?它与注册表服务有关,还是与我的本地机器有关?
我在 Mac OS X 下使用 Docker。
【问题讨论】:
标签: performance docker boot2docker