我有一个使用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。