docker學習(7) docker鏡像原理和分層理解

1.鏡像是什麼

       鏡像是一個輕量級,可執行的獨立軟件包,包含某個軟件所需的所有內容(代碼、運行時、庫、環境變量和配置文件),所有的應用直接打包docker鏡像就能直接跑起來。

2. 聯合文件系統(UnionFS)

     一種分層、輕量級且高性能的文件系統,支持對文件系統修改作爲一次提交來層層疊加,同時可以將不同目錄掛載到同一個虛擬文件系統下,它是docker鏡像的基礎。鏡像可以通過分層來進行繼承,基於基礎鏡像,可以製作具體的應用鏡像。

    特性:一次可以同時加載多個文件系統,聯合加載可以把各層文件系統疊加起來,使得最終文件系統包含所有底層文件和目錄。

 3. docker鏡像原理

 docker鏡像實際上就是由一層一層的文件系統組合而成。

(共用)bootfs(boot file system) 主要包含bootloader和kernel,bootloader 主要是引導加載kernel,Linux剛啓動時會加載bootfs文件系統,在Docker鏡像的最底層是bootfs。這一層與我們典型的Linux/Unix系統是一樣的,包含boot加載器和內核。當boot加載完成之後整個內核就存在內存中了,此時內存的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs。

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

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

 4. 分層理解

所有docker鏡像都是起始於一個基礎鏡像,當鏡像修改或增加內容時,就會在當前鏡像層之上,創建新的鏡像層。

 

第八篇:Docker鏡像結構原理

第八篇:Docker鏡像結構原理

分層時有文件更新直接替換,基礎鏡像一樣時直接拿過來複用。 

 如redis下載時,第一層相同,直接複用,其他幾層分層下載。

afb6ec6fdc1c: Already exists 
608641ee4c3f: Pull complete 
668ab9e1f4bc: Pull complete 
78a12698914e: Pull complete 
d056855f4300: Pull complete 
618fdf7d0dec: Pull complete 

特點:docker鏡像是隻讀的,容器啓動時,我們的所有操作都是在鏡像之上的新的一層,即可寫層。

5. commit 鏡像 

docker commit 提交容器爲一個新副本

docker commit -m="提交的描述信息“ -a="作者" 容器id 目標鏡像名

如我把修改過tomcat鏡像進行提交.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章