docker映象大小的計算

2022-06-14 06:12:11 字數 860 閱讀 6589

聯合檔案系統

dockerfile 中命令與映象層一一對應,那麼是否意味著 docker build 完畢之後,映象的總大小是否等於每一層映象的大小總和呢?答案是肯定的。依然以上圖為例:如果 ubuntu:14.04 映象的大小為 200 mb,而 run.sh 的大小為 5 mb,那麼以上三層映象從上到下,每層大小依次為 0、0 以及 5 mb,那麼最終構建出的映象大小的確為 0 + 0 + 5 + 200 = 205 mb。

雖然最終映象的大小是每層映象的累加,但是需要額外注意的是,docker 映象的大小並不等於容器中檔案系統內容的大小(不包括掛載檔案,/proc、/sys 等虛擬檔案)。個中緣由,就和聯合檔案系統有很大的關係了。

首先來看一下這個簡單的 dockerfile 例子(假設在 dockerfile 當前目錄下有乙個 100 mb 的壓縮檔案 compressed.tar ):

from ubuntu:14.04

add compressed.tar /

run rm /compressed.tar

add compressed.tar /

分析完畢之後,我們發現映象的總大小為 400 mb,但是如果執行該映象的話,我們很快可以發現在容器根目錄下執行 du -sh 之後,顯示的數值並非 400 mb,而是 300 mb 左右。主要的原因還是,聯合檔案系統的性質保證了兩個擁有 compressed.tar 檔案的映象層,容器僅能看到乙個。同時這也說明了乙個現狀,當使用者基於乙個非常大,甚至好幾個 gb 的映象執行容器時,在容器內部檢視根目錄大小,發現竟然只有 500 mb 不到,甚至更小。

我們可以通過docker history image_id來檢視每層的檔案大小

怎樣壓縮Docker 映象的大小

第一步是修改dockerfile裡的基礎映象 from ubuntu from alpine from python 2.7 from python 2.7 alpine from ruby 2.3 from ruby 2.3 alpine 使用alpine最大的不同就是安裝包的方式不一樣 比如ru...

深刻理解 Docker 映象大小

docker 映象說大不大,說小不小,但是一旦映象的總數上來之後,豈不是對本地磁碟造成很大的儲存壓力?平均每個映象 500 mb,豈不是 100 個映象就需要準備 50 gb 的儲存空間?結果往往不是我們想象的那樣,docker 在映象復用方面設計得非常出色,大大節省映象占用的磁碟空間。docker...

Docker學習 Docker映象

一 列出映象 命令 docker images optsions repositort a 標識列出所有 f 寫過濾條件 no trunc 不截斷id q 只顯示唯一id repository是倉庫名字 registry代表的是大庫 tag標籤名字 對應版本,id唯一標識 庫名字 標籤 對應乙個id...