如何調整Docker裡面的Image 大小?
在過去幾年的發展過程中,Docker獲得業界的高度認可。因其能夠簡化部署,被廣泛應用於企業應用開發場景中。
Docker給開發者帶來的最直接好處是,可以打包他們的應用,將所有應用都捆綁在一個封套中,然後釋出到任何流行的Linux機器上。並且,Docker能實現虛擬化,各種應用之間不需要任何介面。也就是,我們常說的“開箱即用”,無需大量安裝或者配置相關的軟體、硬體等。
而Docker Image就是Docker 映象。Docker映象是一個只讀的模板。比如一個映象可以包含Ubuntu系統以及安裝在Ubuntu上的Apache Web伺服器和你自己的應用。映象是用來建立容器的。Docker提供了一個簡單的方式用以建立新的映象或者更新現存的映象,甚至你可以下載其他地方提供的映象。
由於Docker使用一個統一檔案系統,Docker映象其實就是一堆檔案的集合,並不是像VM那樣的是一個作業系統。映象可以簡單到只有一個程式檔案,比如如果你寫了一個簡單的hello world程式放到一個空的映象中,那麼整個映象的大小,就是你編譯後的二進位制檔案的大小。
Docker Image 小是很有好處的,可以不用不浪費自己的SSD空間,來處理數十億位元組的Docker資料。
有時候,因企業業務規模化發展,Docker Image 變得非常大。技術開發人員不得不想辦法,調整Image 大小。如何不斷最佳化應用,最終讓Image 大小減少到原來的一半?
第一步,Image 分層。使用Ubuntu作為基礎映象,搭建一個 Java執行環境。如果你有相關應用,還要整合第三方的結果檢查工具。比如:安裝Mono,透過NPM安裝 TSLint和 ESLint,以便於我們獲得更大的映象處理能力。
第二步,核查BUG。之前,Image 的大小為1GB大。然而,在一次常規的拉取中,技術人員希望下載的資料量與源資料大小大相同,因為基本Image (Ubuntu、Java、…)還要保持穩定。但我的控制檯顯示,出現了異樣:
貌似有資料被多次下載。因為這是最後一層,所以這些都是真正的分發檔案。檢查Dockerfile後發現,所有目錄都是經過編輯的。在傳統的部署設定中,安全的操作方式是,Docker必須新增一個新的映映象層,並且包含所有分發檔案以及所有權資訊。
在實際的Docker構建之前,透過調整所有權資訊,很容易擺脫chown呼叫,從而讓最終的Image 節省了300MB。
第三步,繼續刪減位元組。檔案產生的大小是670 MB,這只是開始,還有一定的刪減空間。當OpenJDK被用於Java執行時,它附帶了一些開發和GUI工具。把沒有用的OpenJRE替換掉,可以立即節省將近100 MB的記憶體。然後執行StyleCop,並從Mono中的 .NET PDB 檔案中閱讀資訊。Mono已經被安裝在mono-complete 包中,透過強依賴關係,例如透過一個完整的MonoDevelop,來實現更多兆位元組的刪減。不管是ESLint,還是TSLint,都只是在NodeJS執行時才能啟動。
最終,我們把所有應用分別新增到Docker Image中,影像大小由1GB減少到480MB。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31547898/viewspace-2213088/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 圖片大小調整工具:Image Resizer for MacMac
- 如何調整Pycharm字型大小PyCharm
- Excel如何調整圖片大小Excel
- sga_target大小調整
- MAC新手教程:如何快速調整Dock欄的大小Mac
- win10畫板調整大小為A4怎麼設定_win10畫板如何調整大小Win10
- 如何設定textarea文字框不可以調整大小
- Linux 中如何使用 gThumb 批次調整圖片大小Linux
- launchpad圖示大小怎麼調整?mac圖示調整大小方法介紹Mac
- win10如何調整開始欄大小_win10開始欄怎麼調整Win10
- docker筆記46-調整客戶端rbd塊裝置的大小Docker筆記客戶端
- Linux系統調整swap大小Linux
- wps批量調整圖片大小
- ORACLE RAC+DG調整redo大小Oracle
- JavaScript滑鼠拖動調整div大小JavaScript
- Oracle調整redo log日誌大小Oracle
- 如何用利特爾法則調整執行緒池大小執行緒
- 如何使用利特爾法則調整執行緒池大小執行緒
- win10圖示間距大小怎麼調整_win10如何調整圖示間距Win10
- 如何調整畫布內容並獲得調整大小(壓縮)的影像Base64資料?
- 如何使用Automator服務在Mac上快速調整影像大小Mac
- win10工作列預覽視窗大小如何調整_win10工作列縮圖預覽視窗大小的調整方法Win10
- Nginx 調整檔案上傳大小限制Nginx
- Fast Resize for Mac(圖片大小調整工具)ASTMac
- jQuery滑鼠拖動調整數字大小jQuery
- Python 調整PDF頁面尺寸大小Python
- 禪道檔案大小限制-nginx 調整Nginx
- docker imageDocker
- 指令碼執行 py 檔案,該如何調整瀏覽器大小?指令碼瀏覽器
- win10如何取消視窗貼邊時自動調整大小Win10
- 批量調整視訊尺寸大小的方法,一鍵自動批量調整視訊
- win10系統如何使用自帶Photos應用調整影像大小Win10
- 影片直播系統原始碼,CSS3如何調整背景圖片大小原始碼CSSS3
- Chopping Block for Mac 圖示大小調整軟體BloCMac
- kindeditor 上傳圖片 自動調整尺寸大小
- Mac 使用心得,調整MacOS的游標大小Mac
- 調整Linux磁碟分割槽的大小的方法Linux
- TOMCAT記憶體溢位及大小調整Tomcat記憶體溢位