映象是一種輕量級的可執行的軟體包,用來打包軟體執行的環境和基於執行環境開發的軟體,它包含軟體執行所需的所有內容,包括**、依賴庫、環境變數、配置檔案。
unionfs是一種分層、輕量級、高效能的檔案系統,它支援對檔案系統的修改作為一次提交來一層層疊加,同時可以將不同目錄掛載到統一虛擬檔案系統下。
union檔案系統是docker映象的基礎,映象可以通過分層來繼承,基於基礎映象(沒有父映象),可以製作各種具體的應用映象。
特性:一次同時載入多個檔案系統,但從外面看起來,只能看到乙個檔案系統,聯合載入會把各層檔案系統疊加起來,這樣最終的檔案系統會包含所有底層的檔案和目錄。
再比如有多個映象都從相同的 base 映象構建而來,那麼宿主機只需在磁碟上保留乙份 base 映象,同時記憶體中也只需要載入乙份 base 映象,這樣就可以為所有的容器服務了,而且映象的每一層都可以被共享。
docker中的所有映象也是分層的,起始於乙個基礎映象層,當修改或增加都會在這之上建立新的映象層,類似新增安全補丁。
這種情況下,上層映象層中的檔案覆蓋了底層映象層中的檔案。這樣就使得檔案的更新版本作為乙個新映象層新增到映象當中。
docker 通過儲存引擎(新版本採用快照機制)的方式來實現映象層堆疊,並保證多映象層對外展示為統一的檔案系統。
bootfs(file system) 主要包含bootloader和kernel,boot載入器主要是引導載入核心,linux剛啟動時會載入bootfs檔案系統,在docker映象的最底層是bootfs。這一層與我們典型linux/unix系統是一樣的,包含boot載入器和核心。當boot載入完成之後整個核心就在記憶體中了,此時記憶體使用權已有bootfs轉交給核心,此時系統會解除安裝bootfs。
rootfs(root file system)是bootfs之上,包含的就是典型的linux系統中的/dev,/proc,/bin,/etc等標準目錄和檔案。
rootfs就是各種不同作業系統發行版,比如ubuntu,centos等等。對於linux的不同發行版,bootfs基本都是一樣的,rootfs會有差別,因此不同發行版可以公用bootfs.
虛擬機器啟動分鐘級別,容器是秒級啟動的原因就在這。
docker映象原理
映象就是基於執行環境的軟體包,不妨想象成乙個千層餅 映象底層就是unionfilesystem聯合檔案系統,簡稱union檔案,分為 bootfs 引導載入kernel,包含載入器和記憶體 rootfs 不一樣,諸如ubuntu 和centos的區別,但他們都共用bootfs載入的核心 顯然這種分層...
Docker 映象原理
目錄參考文獻 映象是什麼 unionfs 映象載入原理 為什麼採用分層映象 toc尚矽谷 docker核心技術 基礎篇 形象說法 映象就像千層餅,一層套一層 官方 映象是一種輕量級 可執行的獨立軟體包,用來打包軟體執行環境和基於執行環境開發的軟體,它包含執行某個軟體所需的所有內容包括 執行時 庫 環...
docker映象分層原理
學習了linux的 namespace之後,知道了docker是如何將機器的資源進行隔離的,那麼docker中的映象分層技術的原理是什麼呢?答案是聯合檔案系統 先看看overlay的架構圖也許就明白了一半了 原理 overlayfs在linux主機上只有兩層,乙個目錄在下層,用來儲存映象 docke...