【docker】UnionFS聯合操作系統

Linux 的 Namespace、CGroups 和 UnionFS 三大技術支撐了 Docker 的實現。

一、為什么需要聯合文件系統?

在傳統操作系統中,每個文件系統都是獨立的孤島。但當我們需要:

  • 合并多個目錄的內容

  • 保持基礎系統不變的同時進行修改

  • 高效共享重復文件內容

UnionFS應運而生!它通過文件系統堆疊技術,將多個目錄(通常是只讀的)合并成一個統一的視圖。

二、UnionFS的核心魔法原理

接下來我們用一個例子理解下UnionFS文件系統
創建以下目錄
注意,layer1 和 layer2 目錄中各有一個文件 file1,但文件內容不同。
  • layer1?和?layer2:模擬?Docker鏡像的只讀層(類似刻錄的光盤,內容不可變)

  • upperlayer:模擬?容器的可寫層(像透明便利貼,記錄修改)

  • mountedfs:聯合掛載點(展示"合并后的世界")

使用基本語法掛載文件系統:
說明:-t aufs:指定文件系統類型為 aufs。
-o br:upperlayer:layer1:layer2:-o 用于指定掛載選項。br 是 aufs 的選項,表示指定分支(branches)。upperlayer:layer1:layer2 是分支的具體路徑,upperlayer 是上層目錄,通常是可寫
層。layer1 和 layer2 是只讀層,通常是基礎鏡像層或依賴層。多個分支用冒號:分隔。
none:表示沒有實際的設備文件,因為 aufs 是一個虛擬文件系統。
mountedfs:掛載點目錄,即文件系統掛載的目標路徑。
檢查掛載點 mountedfs,可以看到其內容就是 layer1 和 layer2 的并集,注意 file1 的內容:
可以看到,掛載點目錄的 file1 顯示的是 layer1 中 file1 的內容,而沒有顯示 layer2 中 file1 的內容。 這是由在設置 AUFS 文件系統的分支(即層)的時候 upperlayer:layer1:layer2 選項所決定的,layer1 在前,AUFS 的優先級是從左到右的,這就意味著,如果一個文件存在于兩個層中,則 AUFS 文件 系統中顯示的版本將是最左側層的版本,理解這一點非常重要。
接下來,我們在掛載點目錄創建一個內容為"new content for file4"的新文件 file4:
file4 實際是創建在了 upperlayer 這一可寫層的。
繼續,如果刪除掛載點目錄文件 file1,會發生什么情況呢?

刪除file1,掛載點mountedfs中的file1盡管被刪除了,實際在 upperlayer 生成 隱藏標記文件( .wh.file1)(告訴系統:雖然底層有file1,但請假裝看不見),layer1/file1 和 layer2/file1 完好無損。這樣,file1 文件不會顯示在最終掛載的文件系統中。

如果我們在掛載點目錄重新創建 file1 時(注意文件內容和前面刪除的并不一樣),那么

這個控制文件會被移除掉,新的 file1 所在目錄是在 upperlayer 中。

三、總結

當運行容器時:

  1. 在只讀鏡像層之上添加可寫層

  2. 所有運行時修改發生在可寫層

  3. 容器刪除 → 可寫層消失 → 鏡像保持純凈

UnionFS的核心優勢其實圍繞三個關鍵詞:共享、隔離、效率。具體體現在:

1 分層機制節省存儲空間(多個容器共享基礎鏡像層)

2 寫時復制保證安全性(原始鏡像永不修改)

3 聯合掛載實現高效部署(無需復制完整文件系統)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94457.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CTF-XXE 漏洞解題思路總結

一、XXE 漏洞簡介XXE (XML External Entity) 漏洞允許攻擊者通過構造惡意的 XML 輸入,強迫服務器的 XML 解析器執行非預期的操作。在 CTF 場景中,最常見的利用方式是讓解析器讀取服務器上的敏感文件,并將其內容返回給攻擊者。二、核心攻擊載荷…

GitLab:一站式 DevOps 平臺的全方位解析

GitLab:一站式 DevOps 平臺的全方位解析 在當今數字化時代,軟件研發的效率與質量直接決定企業的市場競爭力。GitLab 作為全球領先的 DevOps 平臺,憑借 “從構思到部署” 的全流程管理能力,已成為無數企業加速軟件交付的核心工具。…

Flink富函數:一種更靈活、可擴展的方式來定義數據流的處理邏輯

本文重點 Flink中的富函數類是一組用于處理數據流的函數接口和實現類。富函數類提供了一種更靈活和可擴展的方式來定義數據流的處理邏輯。 富函數類 富函數類是DataStream API提供的一個函數類的接口,所有的Flink函數類都有其Rich版本。富函數類一般是以抽象類的形式出現的。…

【STM32】HAL庫中的實現(四):RTC (實時時鐘)

🕒HAL庫中的實現:RTC(Real-Time Clock)實時時鐘RTC 是 STM32 的低功耗實時時鐘模塊,常用于: 實時時間維護(年月日時分秒)定時喚醒日志時間戳鬧鐘功能RTC(實時時鐘&#x…

Pauli 矩陣指數函數展開為顯式矩陣 e^A -> B

要展開表達式 為普通矩陣,其中 是 Pauli 矩陣, 是單位向量, 是實數。以下是詳細推導步驟:1. Pauli 矩陣的性質Pauli 矩陣定義為:它們滿足以下關系:?其中 是 Kronecker delta,? 是 Levi-…

【Algorithm | 0x03 搜索與圖論】DFS

DFS基礎知識典型例題例1:n皇后問題例2:拍照例3:理發基礎知識 核心原理:一條路走到黑 示意圖:其含義表示,在這個圖中頂層是第0層,也就是后面dfs的入口,一般從dfs(0)開始操作。 模版&a…

Redis的數據過期策略有哪些?

Redis內部通過兩種主要策略來處理過期的Key: 惰性刪除 惰性刪除:顧明思議并不是在TTL到期后就立刻刪除,而是在訪問一個key的時候,Redis會先檢查這個鍵是否過期。如果過期,就刪除它,然后返回nil。 這種方式非…

水庫雨水情測報和大壩安全監測系統解決方案

一、方案背景 在全球氣候變化和極端天氣頻發的背景下,水庫作為重要的水利設施,承擔著防洪、供水、灌溉、發電等多重功能。然而,由于水庫蓄水量巨大,一旦發生潰壩或運行異常,將對下游地區造成不可估量的生命財產損失。因…

BFS 和 DFS 編程思想、框架、技巧及經典例題總結

BFS 和 DFS 編程思想、框架、技巧及經典例題總結 一、核心編程思想 BFS(廣度優先搜索) 核心思想:以「層次遍歷」為核心,從起點出發,優先探索距離起點最近的節點,逐層擴散遍歷。本質:通過「隊列」…

【面試場景題】日志去重與統計系統設計

文章目錄題目場景描述要求問題考察點解答思考一、核心解決方案(基礎版,單節點32GB內存、10臺節點)1. 整體架構選型2. 關鍵步驟詳解(1)數據分片:解決“數據量大,單節點處理不了”的問題&#xff…

【Day 16】Linux-性能查看

目錄 一、Stress系統壓力測試工具 二、性能查看 (一)查看CPU # nproc # lscpu # top # uptime # mpstat 數字1 數字2 (二)查看內存 # dmidecode -t memory | less # free -h # …

【ICCV2017】Deformable Convolutional Networks

一、摘要盡管卷積神經網絡(CNN)在視覺識別任務上取得巨大成功,但其固有的固定幾何結構(固定卷積采樣網格、固定池化窗口、固定 RoI 劃分)嚴重限制了對未知幾何變換(尺度、姿態、形變、視角變化)…

echarts在前后端分離項目中的實踐與應用

目錄 一、ECharts簡介 二、后端數據接口設計 三、數據結構設計 1. 柱狀圖數據結構 2. 餅圖數據結構 四、后端實現要點 五、前端ECharts配置解析 1. 柱狀圖配置 2. 餅圖配置 六、最佳實踐建議 七、總結 一、ECharts簡介 ECharts是百度開源的一個基于JavaScript的可視…

SQL 四大語言分類詳解:DDL、DML、DCL、DQL

SQL(結構化查詢語言)通常被分為四種主要類型,每種類型負責不同的數據庫操作。下面我將詳細介紹這四類SQL語言的語法和用途。一、DDL (Data Definition Language) 數據定義語言功能:定義和管理數據庫對象結構(表、視圖、…

ESP-idf框架下的HTTP服務器\HTML 485溫濕度采集并長傳

項目描述:本項目采用485采集溫濕度以及電壓電流等,485模塊分別為下圖,串口轉485模塊采用自動收發模塊,ESP32工作在AP熱點模式,通過手機連接esp32的熱點來和esp進行數據通訊,使用esp32作為HTTP服務器缺陷:項目的最終HTML頁面代碼可發給AI讓其寫注釋#include "freertos/Free…

雅江工程解鎖墨脫秘境:基礎條件全展示(區位、地震、景點、天氣)

目錄 前言 一、區位信息 1、空間位置 2、區位介紹 二、地震信息 1、歷史地震信息 2、5.0級以上大地震 三、景點信息 1、景點列表分布 2、4A級以上景點 四、天氣信息 1、天氣實況 2、天氣應對挑戰 五、總結 前言 相信最近大家對雅江電站的超級大工程項目應該有所耳…

??機器學習貝葉斯算法

??一、引言??在當今機器學習領域,貝葉斯算法猶如一顆璀璨的明星。你是否想過,垃圾郵件過濾系統是如何準確判斷一封郵件是否為垃圾郵件的呢?這背后可能就有貝葉斯算法的功勞。今天,我們就一同走進貝葉斯算法的世界,…

Chisel芯片開發入門系列 -- 18. CPU芯片開發和解釋8(流水線架構的代碼級理解)

以【5 Stage pipeline CPU】搜索圖片,選取5幅有代表性的圖列舉如下,并結合Chisel代碼進行理解和點評。 圖1:原文鏈接如下 https://acsweb.ucsd.edu/~dol031/posts/update/2023/04/10/5stage-cpu-pipeline.html 點評:黑色的部分…

Docker容器中文PDF生成解決方案

在Docker容器中生成包含中文內容的PDF文件時,經常遇到中文字符顯示為方塊或亂碼的問題。本文將詳細介紹如何在Docker環境中配置中文字體支持,實現完美的中文PDF生成。 問題現象 當使用wkhtmltopdf、Puppeteer或其他PDF生成工具時: 中文字符…

2.java集合,線程面試題(已實踐,目前已找到工作)

1線程的創建方式 繼承Thread類實現Runnable接口實現Callable接口 2.這三種方式在項目中的使用有哪些,一般都是怎么用的 繼承thread類實現線程的方式通過實現run方法來實現線程,通過run進行線程的啟用實現runnable方法實現run方法,然后通過thr…