1. 程式人生 > >Docker快速入門系列(九)——Docker映象基本理論概述

Docker快速入門系列(九)——Docker映象基本理論概述

                                                    《 Docker映象基本理論概述 》

前言

在前面進行了docker相關的常用命令進行了詳細的介紹,接下來將進入Docker的映象操作篇,通過本篇部落格的學習,將對Docker映象有一個基本的瞭解,什麼是映象?Docker映象的載入原理是什麼?Docker映象為什麼採用分層的這樣一個結構?以及Docker映象的特點有哪些?

Docker之映象操作

1、什麼是 Docker 映象 ?

Docker 映象是一種輕量級可執行獨立軟體包,用來打包軟體執行環境和基於執行環境開發的軟體,它包含執行某個軟體所需的所有內容,包括程式碼、執行時、庫、環境變數和配置檔案。

2、UnionFS(聯合檔案系統)

Union檔案系統(UnionFS)是一種分層輕量級並且高效能的檔案系統,它支援對檔案系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬檔案系統下(unite several directories into a single virtual filesystem)。Union 檔案系統是 Docker 映象的基礎。映象可以通過分層來進行繼承,基於基礎映象(沒有父映象),可以製作各種具體的應用映象。

其特性具有:一次同時載入多個檔案系統,但從外面看起來,只能看到一個檔案系統,聯合載入會把各層檔案系統疊加起來,這樣最終的檔案系統會包含所有底層的檔案和目錄。

3、Docker 映象載入原理

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等等。

平時我們安裝進虛擬機器的CentOS都是好幾個G,為什麼docker這裡才200M??

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

4、分層的映象

這兒以我們的 pull 為例,在下載的過程中我們可以看到 docker 的映象好像是在一層一層的在下載,比如現在拉取一個 Tomcat 映象檔案,輸入命令 “ docker pull centos  ” ,會看到逐層下載,如下圖:

5、Docker 映象為何採用分層結構?

Docker 映象採用分層的結構最大的優點之一就是 - 共享資源

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

6、Docker 映象特點

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

 好了,關於 Docker映象基本理論概述  就寫到這兒了,如果還有什麼疑問或遇到什麼問題歡迎掃碼提問,也可以給我留言哦,我會一一詳細的解答的。 
歇後語:“ 共同學習,共同進步 ”,也希望大家多多關注CSND的IT社群。

作       者: 華    仔
聯絡作者: [email protected]
來        源: CSDN (Chinese Software Developer Network)
本文為博主原創文章,請在轉載時務必註明博文出處!