Docker 镜像减少体积的思路和方法

Docker 镜像减少体积的思路和方法


背景

有一个项目感觉镜像有点大
这边同事喊着一起帮忙处理一下.
今天基本上就在客户现场进行处理了. 
想着应该把自己想到的东西整理一下.

整体思路

1. 清理dockerfile 同级目录内的文件, 仅保留必须文件
   docker build 时会进行send file的操作, 不进行send 能够提高镜像制作的速度. 
2. 通过.dockerignore 的方式减少打包进入到系统中的文件
   通过 ./相对路径/xxx/支持 * 等的方式不将文件打入到镜像中. 避免镜像过于庞大. 
3. 通过分阶段构建, 先将必要的比如nodejs, 语言, 字体等基于OpenJDK制作成一个nodejs的镜像.
   通过分阶段构建, 可以减少镜像的总体时间. 业务镜像可以From nodejs的镜像实现快速打包. 
4. 分层构建. 按照业务进行拆分. 可以横向和纵向拆分. 
   业务可以在一层, 也可以是多层. 拆分SU的话能够极大的减少的镜像的体积.
5. 导出时采用 docker save images:tag |gzip > image_withCOmpress.tar 
   这样方式能够达到37%到45%的压缩率. 虽然可能会增加50%的导出时间, 但是网络消耗时间会有极大的提升. 

部分细节

1. 复制文件进入镜像后, 必须在同一层执行删除, 如果进入第二层再删除, 镜像文件就不会有缩减了. 
2. 尽量使用ADD的方式, 避免使用方式一里面的COPY方式. 避免组件浪费磁盘空间. 
3. .dockerignore 的方式很重要, 需要严格进行处理和学习.  根据业务来处理. 支持
4. 每一步骤都需要进行time 或者是留下痕迹. 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章