深刻理解 Docker 映象大小

2022-01-22 10:06:21 字數 879 閱讀 3236

docker 映象說大不大,說小不小,但是一旦映象的總數上來之後,豈不是對本地磁碟造成很大的儲存壓力?平均每個映象 500 mb,豈不是 100 個映象就需要準備 50 gb 的儲存空間?

結果往往不是我們想象的那樣,docker 在映象復用方面設計得非常出色,大大節省映象占用的磁碟空間。docker 映象的復用主要體現在多個不同的 docker 映象可以共享相同的映象層。

假設本地映象儲存中只有乙個 ubuntu:14.04 的映象,我們以兩個 dockerfile 來說明映象復用:

from ubuntu:14.04

run apt-get update

from ubuntu:14.04

add compressed.tar /

假設最終 docker build 構建出來的映象名分別為 image 1 和 image 2 ,由於兩個 dockerfile 均基於 ubuntu:14.04 ,因此,image 1 和 image 2 這兩個映象均復用了映象 ubuntu:14.04 。 假設 run apt-get update 修改的檔案系統內容為 20 mb,最終本地三個映象的大小關係應該如下:

ubuntu:14.04 : 200 mb

image 1 :200 mb(ubuntu:14.04 的大小)+ 20 mb = 220 mb

image 2 :200 mb(ubuntu:14.04 的大小)+ 100 mb = 300 mb

如果僅僅是單純的累加三個映象的大小,那結果應該是:200 + 220 + 300 = 720 mb,但是由於映象復用的存在,實際占用的磁碟空間大小是:200 + 20 + 100 = 320 mb,足足節省了 400 mb 的磁碟空間。在此,足以證明映象復用的巨大好處。

深刻理解IdentityHashMap

新建pojo package test public class cat public string getname public void setname string name public integer getage public void setage integer age public...

深刻理解IdentityHashMap

新建pojo package test public class cat public string getname public void setname string name public integer getage public void setage integer age public...

JS深刻理解補充

對於函式的理解,首先看乙個函式定義 function functiondefined 顯而易見,functiondefined 為函式名字,在js中為指向這個函式體的指標,代表這個函式的指標的變數,並且和原始資料型別一樣儲存在棧中。而functiondefined函式體則儲存在堆中。每當new出乙個...