Docker中的分層結構詳解
Docker的分層結構
UnionFS(聯(lián)合文件系統(tǒng))
Union文件系統(tǒng)(UnionFS)是一種分層、輕量級并且高性能的文件系統(tǒng),它支持對文件系統(tǒng)的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統(tǒng)下(unite several directories into a single virtual filesystem)。Union文件系統(tǒng)是Docker鏡像的基礎。鏡像可以通過分層來進行繼承,基于基礎鏡像(沒有父鏡像),可以制作各種具體的應用鏡像。
特性: 一次同時加載多個文件系統(tǒng),但從外面看起來,只能看到一個文件系統(tǒng),聯(lián)合加載會把各層文件系統(tǒng)疊加起來,這樣最終的文件系統(tǒng)會包含所有底層的文件和目錄。
Docker鏡像的加載原理
docker鏡像實際上由一層層的文件系統(tǒng)組成,這種層級的文件系統(tǒng)UnionFS。
bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引導加載kernel,Linux剛啟動時會加載bootfs文件系統(tǒng),在Docker鏡像的最底層是引導文件系統(tǒng)bootfs。
這一層與我們典型的Linux/Unix系統(tǒng)是一樣的,包含boot加載器和內(nèi)核。
當boot加載完成之后整個內(nèi)核就都在內(nèi)存中了,此時內(nèi)存的使用權已由bootfs轉(zhuǎn)交給內(nèi)核,此時系統(tǒng)也會卸載bootfs。
rootfs(root file system),在bootfs之上。
包含的就是典型Linux系統(tǒng)中的/dev,/proc,/bin,/etc等標準目錄和文件。
rootfs就是各種不同的操作系統(tǒng)發(fā)行版,比如Ubuntu,Centos等等。

鏡像分層的一個最大的好處就在于:資源共享,方便復制遷移(為了復用)
比如說有多個鏡像都從相同的base鏡像構建而來,那么Docker Host只需要在磁盤上保存一份base鏡像,同時內(nèi)存中也只需要加載一份base鏡像,就可以為所有的容器服務了。而且鏡像的每一層都可以被共享。
Docker鏡像層都是只讀的,容器層是可寫的當容器啟動時,一個新的可寫層被加載到鏡像的頂部。這一層通常被稱作“容器層”,“容器層”之下的都叫“鏡像層”。

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
基于?Docker?和?Flask?構建高并發(fā)微服務架構的實現(xiàn)
本文主要介紹了基于?Docker?和?Flask?構建高并發(fā)微服務架構,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2025-03-03
Docker 容器指定自定義網(wǎng)段的固定IP/靜態(tài)IP地址
這篇文章主要介紹了Docker 容器指定自定義網(wǎng)段的固定IP/靜態(tài)IP地址的相關資料,需要的朋友可以參考下2016-12-12
docker?build?-t?和?docker?build?-f?區(qū)別解析
docker build 是用于構建Docker鏡像的命令,它允許你基于一個Dockerfile來創(chuàng)建一個鏡像,在 docker build 命令中,有兩個常用的選項 -t 和 -f,它們有不同的作用,這篇文章主要介紹了docker?build?-t?和?docker?build?-f?區(qū)別,需要的朋友可以參考下2023-08-08
Docker端口映射實現(xiàn)網(wǎng)絡訪問的方法
本篇文章主要介紹了Docker端口映射實現(xiàn)網(wǎng)絡訪問的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
docker容器查看所有沒使用的鏡像并刪除的實現(xiàn)
本文主要介紹了docker容器查看所有沒使用的鏡像并刪除的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08
Docker實現(xiàn)從零開始搭建SOLO個人博客的方法步驟
本文主要介紹了Docker實現(xiàn)從零開始搭建SOLO個人博客,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11

