Dockerfile 要求在保证功能的前提下,尽量减少层数。可以通过合并 来达到减少层的目的。
原本的样子:
两个 RUN 很相似,先更新,再安装,最后删。
这样 build 的镜像会有两层,不符合最小层的原则,还有就是两次 RUN 都执行了 这样会更新两次软件源,延长了 build 的时间。总之就是效率很低,而且产物还不理想。
修改后的样子:
这样安装相同的 packages 只需要更新一次软件源,而且构建的镜像只有一层。
几个命令解释:
-
:同意安装,build docker 是非交互的过程,所以要使用 默认同意安装。
-
:不安装推荐的软件。非必要的文件不安装,减少镜像的体积。
-
: 允许安装不可信的 package。
-
命令清除遗留在 目录下的文件。
-
移除未使用的软件包。
-
: 目录下存放的都是软件源的 metadata,也就是用 时下载的文件。不能乱删,第一个 RUN 到后面把这个目录下文件给删了,第二个 RUN 就必须重新 ,不然的话,第二个 RUN 中的 很可能就会 错 ,原因是找不到软件源。
PS:开发还是应该要有点运维功底的。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!