当前位置: 首页 > news >正文

【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.dtcms.com/a/316880.html

相关文章:

  • 2025年渗透测试面试题总结-02(题目+回答)
  • 一种红外遥控RGB灯带控制器-最低价MCU
  • Redis类型之String
  • linux-单用户模式、营救模式
  • 高阶 RAG :技术体系串联与实际落地指南​
  • RHCA03--硬件监控及内核模块调优
  • 【Spring Cloud】-- RestTeplate实现远程调用
  • Java开发时出现的问题---并发与资源管理深层问题
  • 嵌入式开发学习———Linux环境下IO进程线程学习(四)
  • 《嵌入式数据结构笔记(三):数据结构基础与双向链表》
  • 应急响应排查思路
  • MLIR Bufferization
  • JWT 签名验证失败:Java 与 PHP 互操作问题解决方案
  • OpenHarmony 5.0 Settings中wifi删除密码立刻去输入密码连接,连接不上
  • 性能测试终极指南:从指标到实战
  • 自动驾驶中的传感器技术24——Camera(15)
  • Mybatis的应用及部分特性
  • 机器学习——集成学习(Ensemble Learning):随机森林(Random Forest),AdaBoost、Gradient Boosting,Stacking
  • 企业级Redis Cluster部署详解及演练
  • 森赛睿科技成为机器视觉产业联盟会员单位
  • 解决cv::dilate处理后的图像边缘像素出现异常值的问题
  • 结构化设计工具与技术详解
  • Spring 的优势
  • 内部排序算法总结(考研向)
  • 从递归到动态规划-解码方法Ⅱ
  • 软件测试面试如何避坑呢?
  • 8.5 各种攻击实验
  • 使用 BAML 模糊解析改进 LangChain 知识图谱提取:成功率从25%提升到99%
  • 无人机陀螺仪模块技术解析
  • SQL的LEFT JOIN优化