【Docker教程系列】Docker學習5-Docker鏡像理解

通過前面幾篇文章的學習,我們已經安裝好了Docker,也學會使用一些常用的命令。比如啓動命令、鏡像命令、容器命令。常用命令分類後的第二個就是鏡像命令。那麼鏡像是什麼?拉取鏡像的時候爲什麼是一層一層的?鏡像加載的原理是什麼?本篇,我們就來學學,Dokcer鏡像的分層概念。

《Docker學習系列》教程已經發布的內容如下:

【圖文教程】Windows11下安裝Docker Desktop

【填坑】在windows系統下安裝Docker Desktop後遷移鏡像位置

【Docker學習系列】Docker學習1-docker安裝

【Docker學習系列】Docker學習2-docker設置鏡像加速器

【Docker學習系列】Docker學習3-docker的run命令幹了什麼?docker爲什麼比虛擬機快?

【Docker學習系列】Docker學習2-常用命令之啓動命令和鏡像命令

【Docker學習系列】Docker學習系列3:常用命令之容器命令

【Docker學習系列】Docker學習4-常用命令之重要的容器命令

【Docker學習系列彙總地址】筆記及遇到問題解決文章

鏡像是什麼?

鏡像是一種輕量級、可執行的獨立軟件包,它包含運行某個軟件所需要的所有內容,我們把應用程序和配置依賴打包好形成一個可以交付的運行環境(包括黛米、運行時候需要的庫、環境變量和配置文件等),這個打包好的運行環境就是image鏡像文件

分層的鏡像

我們來從遠程倉庫pull個Tomcat。來看看整個pull的流程:

命令:docker pull tomcat

72432264d78f1798bdb9856b26b17872.png

我們會發現,下載是一層一層的。所以鏡像是分層的

聯合文件系統(UnionFS):

聯合文件系統(UnionFS):是一種分層、輕量級並且高性能的文件系統。它支持對文件系統的修改

作爲一次提交來一層一層的疊加。同時可以將不同目錄掛載到同一個虛擬文件系統下。

Union文件系統是Docker鏡像的基礎。鏡像可以通過分層來進行繼承。基於基礎鏡像(沒有父鏡像[ps:可以理解爲Java中的Object類型]),可以製作各種具體的鏡像。

特性:

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

如同花捲

Docker鏡像加載原理是什麼?

f90eb4df586fe88783c5da8c0326f038.png

 

9dc72ce9e128f9dedf42eaa547f90ac2.png爲什麼docker鏡像要採用這種分層結構呢?

鏡像分層最大的一個好處就是共享資源,方便複製遷移,就是爲了複用。

bd4de2186c9ed634097f03b4efb743dc.png重點理解

Docker鏡像層都是隻讀的,容器層是可寫的。當容器啓動時,一個新的可寫層被加載到鏡像的頂部。這一層通常被稱作容器層,容器層之下的都是鏡像層。

99bb0798e6854ff0dd569664fc8da818.png

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