每次docker build都挺耗时的,有办法可以提升镜像构建速度吗? 我们在开发测试环境希望能更快地看到效果,而不是waiting for docker
building.


可以通过CDN加速,也可以通过Dockerfile优化,可以发邮件到[email protected]交流沟通。
如果是单位内部多个主机使用,可以部署一个registry mirror,避免每次重复从远程拉取镜像,可以大幅度提高build效率。如果只是个人使用,建议配置国内的mirror。另外,也要注意dockerfile的顺序,经常变化的尽量放后面执行,能够充分利用build cache。使用RUN时把多个命令杂糅在一起能够减少layer,不过也可能会由于某一个命令拖垮整个指令,因此建议把那些经常不稳定的命令拆成多个指令吧!另外,base image尽量精简的,比如alpine!


打包好,在 Dockerfile写上, ADD . .
基础镜像尽可能小,我们现在已经全部转为Alpine,然后尽量拆分,dockerfile优化也很重要,docker cache,dockerfile onbuild是个好东西,另外不建议将程序包放在外边,docker本身是个集装箱,还是统一原子的比较好。
把程序包的安装放在Dockerfile前面,常变化的部分放在后面比如代码;使用国内的源,比如阿里的apt-get源

其实主要的还是在于拆分镜像吧。

一般开发、测试中经常变动的是代码部分。

那么对于代码依赖的环境这种变化不多的部分可以先做个基础镜像。

之后,再针对项目代码做每个commit的镜像。希云(http://www.csphere.cn)是搞这方面的,大家可以去看看!

优化Dockerfile,用好缓存和基础镜像,,经常变更的层放后面

执行docker build 命令时,镜像构建的操作在Docker后台守护进程(daemon)中执行,而不是CLI中。因此当前目录下的全部内容会(递归)发送到Docker守护进程。如果当前当前目录下有不需要的大文件会影响构建速度。在一个空目录构建镜像或者在当前目录添加一个 .dockerignore 文件排除上下文目录下,不需要的文件和目录。


推荐阅读:
相关文章