1. 程式人生 > 其它 >docker映象原理之聯合檔案系統

docker映象原理之聯合檔案系統

 

1,映象是什麼

  映象是一種輕量級、可執行的獨立軟體包,用來打包軟體的執行環境和基於執行環境開發的軟體。

它包含執行某個軟體所需的所有內容,包括程式碼,執行時、庫、環境和配置檔案

 

2,如何得到映象:

(1)從遠端倉庫下載

(2)別人拷貝給你

(3)自己製作一個映象dockerfile

 

 

聯合檔案系統

 

docker映象下載原理

(1)UnionFS(聯合檔案系統)

       聯合檔案系統(UnionFS)是一種分層、輕量級並且高效能的檔案系統,它支援對檔案系統的修改作為一次提交來一層層的疊加,

同時可以將不同目錄掛載到同一個虛擬檔案系統下。
       聯合檔案系統是

Docker 映象的基礎。映象可以通過分層來進行繼承,基於基礎映象(沒有父映象),可以製作各種具體的應用映象。

 

(2)

docker的映象實際上由一層一層的檔案系統組成,這種層級的檔案系統UnionFS。

bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引導載入kernel,Linux剛啟動時會載入bootfs檔案系統,在Docker映象的最底層是bootfs。

這一層與我們典型的Linux/Unix系統是一樣的, 包含boot載入器和核心。當boot載入完成之後整個核心就都在記憶體中了,此時記憶體的使用權已由bootfs轉交給核心,此時系統也會解除安裝bootfs。

rootfs(root file system), 在bootfs之上。包含的就是典型Linux系統中的/dev, /proc, /bin, /etc等標準目錄和檔案。rootfs就是各種不同的作業系統發行版,比如Ubuntu,Centos等等。

 

 

 

對於一個精簡的OS,rootfs可以很小,只需要包括最基本的命令、工具和程式庫就可以了,因為底層直接用Host的kernel,自己只需要提供rootfs就行了。由此可見對於不同的linux發行版,bootfs基本是一致的,rootfs會有差別,因此不同的發行版可以共用bootfs。

 

 

 

 

分層理解

 

以我們的pull為例,在下載的過程中我們可以看到docker的映象好像是在一層一層的在下載

 

 

 

 

 

為什麼docker映象要採用這種分層結構呢

 

最大的一個好吃就是共享資源
比如:有多個映象都從相同的base映象構建而來,那麼宿主機只需在磁碟上儲存一份base映象,同時記憶體中也只需載入一份base映象,就可以為所有容器服務了。

而且映象的每一層都可以被共享。

 

 

 

映象的特點:

Docker映象都是隻讀的
當容器啟動時,一個新的可寫層被載入到映象的頂部。
這一層通常被稱作為"容器層",“容器層”之下的都叫"映象層"。

 

 

如何理解: