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 或者是留下痕跡. 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章