標籤:

Docker中的鏡像系統

docker鏡像

什麼是docker鏡像?可能很多人只知道怎麼使用,但是不知道什麼原理?

docker的鏡像分為兩個部分:

(1)bootfs

引導文件系統,包括bootloader和操作系統內核,類似於傳統的操作系統的Linux的引導文件系統,一般情況下,docker很少和bootfs打交道,一旦docker啟動後為了節省空間會將bootfs卸載掉。

(2)rootfs

rootfs位於bootfs上,是docker容器在啟動時內部進程課件的文件系統,即,是我們可見的根目錄。

在傳統的Linux操作系統內核啟動時,首先掛載一個只讀的rootfs,當系統檢測其完整性後,將其切換成讀寫(read-write)模式。

docker 沿用了傳統操作系統的rootfs的掛載方式,在docker daemon啟動之後,rootfs處於docker文件系統的最頂層,並且只是只讀模式;掛載完畢後利用聯合掛載技術在已有的rootfs文件系統上再掛載一個讀寫層,這樣對於用戶來說可讀可寫的文件系統就可以完全展示出來。

另外:利用聯合掛載技術還可以掛載多個只讀層。

可讀可寫的文件系統再發生變化時,才會將發生變化的文件反映到此文件系統上,並且隱藏以前的老版本,這種機制叫做「寫時複製」。

docker鏡像系統的分布:

---------------------- namespace

---------------------- 讀寫層

---------------------- 初始化層

---------------------- 只讀層

所以,docker鏡像分為很多層,許多層構成一個docker鏡像系統,鏡像系統一個最大的特色是:在存儲一個系統時,只需要保存變化的文件,而不是所有文件。

推薦閱讀:

你所不了解的的Docker
Docker運行nginx
[IPN] IT 公論 #135: 迪斯尼樂園——終極的虛擬現實體驗
乾貨 | Docker文件系統的分層與隔離
深度調查:24%的Docker鏡像都存在嚴重漏洞

TAG:Docker |