请问dockerfile里面不同功能的命令该分开几个RUN写还是写在一个RUN命令后面好?

如题,请问dockerfile里面不同功能的命令该分开几个RUN写还是写在一个RUN命令后面好?
比如,我以Ubuntu为基础创建新镜像,一般都会先更新,然后再安装一些需要的命令。然后后面还要安装自己需要用的软件,这些命令都写在一个RUN后面好呢还是分开几个RUN命令写要好?谢谢!

还有个问题,怎么使dockerfile创建的镜像小些呢,我安装了anaconda以及几个软件生成的镜像竟然有6G。。。

阅读 6.5k
2 个回答

尽量用一个RUN命令,因为每个Docker命令就是一个layer,还有就是基础镜像用小一点的,例如alpine这样的小体积基础镜像。详情可以参考 7 步精简 Docker 镜像几百MB(上)

我个人觉得RUN命令写一条还是多条完全取决于这一条RUN命令是否会生成压根不需要的临时文件(比如编译,比如安装软件包带来的软件列表以及软件包缓存)。

强烈推荐看docker官方的最佳实践,新手必看: https://docs.docker.com/engin...

官方的最佳实践中,就总结了怎么命中缓存,怎么减少构建镜像的容量,强烈推荐细细研读一番。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题