1. 程式人生 > 其它 >尚矽谷Docker筆記(4)-- Docker 映象

尚矽谷Docker筆記(4)-- Docker 映象

一、是什麼

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

1、UnionFS(聯合檔案系統)

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

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

2、Docker映象載入原理

Docker映象載入原理:
docker的映象實際上由一層一層的檔案系統組成,這種層級的檔案系統UnionFS。

botfs(boot file system)主要包含bootloaderkernel, 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

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

3、分層的映象

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

4、為什麼 Docker 映象要採用這種分層結構呢

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

二、特點

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

三、Docker映象Commit操作

docker commit 提交容器副本使之稱為一個新的映象

docker commit -m=“提交的描述資訊” -a=“作者” 容器ID 要建立的目標映象名:[標籤名]

案例演示:

1、從Hub上下載tomcat映象到本地併成功執行

docker run -d -p 8080:8080 tomcat

-p主機埠:docker容器埠
-P:隨機分配埠
i:互動
t:終端

2、故意刪除上一步映象生產tomcat容器的文件

3、也即當前的tomcat執行例項是一個沒有文件內容的容器,以他為模板commit一個沒有doc的tomcat新映象 atguigu/tomcat02

4、啟動我們的新映象並和原來的對比

​ 啟動atuigu/tomcat02 沒有doc

​ 啟動原來tomcat他有doc

艾歐尼亞,昂揚不滅,為了更美好的明天而戰(#^.^#)