精简你的 docker 镜像
Intro
现在 docker 的使用越来越普遍,今天来谈一下如何精简你的 docker 镜像
为什么要精简 docker
首先来说说为什么要精简 docker 镜像,减小了之后有什么样的好处?
- 较小的 docker 镜像下载更快,对于网络不太好的童鞋大镜像简直就是灾难
- 较小的 docker 镜像可以更快的部署
如何精简镜像
-
选择更小的基础镜像,比如基于 alpine 的基础镜像
你的镜像是在你选择的基础镜像之上构建的,所以如果你的基础镜像就很大,那么你最后生成的 docker 镜像也不会小
-
多阶段构建,将编译和部署放在不同的阶段,只保留最后要部署的镜像即可
将一些编译的过程和编译需要的环境通过一个中间镜像去完成,而最后生成的镜像只需要包含自己运行所需的运行时环境就可以了,比如说 asp.net core 项目,dotnet core sdk 只需要编译生成的时候需要,实际打包用于部署的应用只需要 dotnet core 的 runtime 就可以了。
-
尽量减少 docker 构建提交,比如多个命令写在一起,链式命令,通过一次 docker 的 commit 执行多条命令
将多个命令写写在一行,链式命令,如果命令很复杂的话也可以通过执行一个脚本,这样可以减少 docker 镜像构建的层,也会减少镜像的大小
Reference
- http://www.infoq.com/cn/articles/3-simple-tricks-for-smaller-docker-images
- https://zhuanlan.zhihu.com/p/35148190
Contact
Contact me: weihanli@outlook.com