【Docker】(三)联合文件系统UnionFS + Overlay2
问答题1、请对UnionFS联合文件系统的实现原理做一个完整说明。答用UnionFS来实现镜像只读但容器是可写在镜像层上面分支创建一个可写层可写层会覆盖镜像层改动时不影响底层数据实现了底层镜像的只读不能被修改。将它们挂载到一个文件系统在挂载点目录mountedfs中创建、删除修改文件时具体保存在可写层upperlayer中。读文件读先可写层没有了再向下读镜像层既实现多容器共享底层镜像节省资源又能让每个容器拥有独立可写空间删除容器只会删除可写层upperlayer底层镜像可重复使用。UnionFS实现了镜像的分层存储 和 容器的数据持久化2、Docker 和 Overlay2、UnionFS 是一个什么样的关系答Overlay2是Docker默认的存储引擎Overlay2是基于内核实现的而UnionFS是基于软件包实现的一、什么是UnionFS联合文件系统UnionFS是一种分层虚拟文件系统核心能力把多个独立目录层合并成一个统一、可视化的挂载视图。多层目录存在同名文件时上层文件会覆盖下层文件底层只读层不会被修改是Docker镜像分层、容器读写的底层基石。二、AUFSUnionFS升级版完整工作原理AUFS是早期Docker使用的联合文件系统也是UnionFS的实现分支分为只读底层镜像层、上层可写容器层两层结构。1. 文件读取逻辑多层目录从上至下优先级递减挂载视图优先展示上层文件可写层upper存在文件 → 直接读取upper文件upper无对应文件逐层向下读取只读镜像层内容。2. 新增文件逻辑在容器内新建文件文件只会写入upper可写层底层只读镜像层完全不会改动实现镜像层共享复用。3. 文件删除whiteout白文件机制容器中删除镜像自带文件时不会真正删除底层只读文件而是在upper层生成特殊隐藏文件.wh.文件名白文件。AUFS识别到.wh.标记后会在统一挂载视图中隐藏对应文件达到“删除”视觉效果底层原始镜像文件完整保留多个容器可以继续共享底层镜像。三、OverlayFS 三层标准结构lower/upper/workLinux 3.18内核原生引入OverlayFS替代AUFS成为主流结构分为三个固定目录lowerdir只读底层层存放镜像所有只读分层多个容器可共用同一组lower目录磁盘复用率高不允许任何写入修改。upperdir容器可写层容器运行时所有新增、修改、删除操作全部存在此目录每个容器独立专属upperdir。workdir临时工作目录OverlayFS内部操作缓存目录文件重命名、删除、拷贝等操作的中转缓存挂载期间目录不可被其他进程占用。最终merged目录是对外统一挂载视图用户/容器看到的整合后完整文件系统。四、Docker 默认存储驱动Overlay2Overlay2是OverlayFS的优化增强版本也是当前Docker默认存储驱动支持最多128层镜像堆叠AUFS层数限制更低内核原生实现无需额外补丁性能、稳定性远超AUFS所有容器分层数据统一存放在宿主机路径/var/lib/docker/overlay2。宿主机目录拆解说明进入/var/lib/docker/overlay2可以看到两类目录一串随机ID命名的分层目录对应镜像每一层文件容器专属目录内部包含lower记录底层只读层、diff等价upper可写层、work、merged挂载视图。启动容器后容器内所有操作都会同步记录到对应diff可写目录。五、CoW写时复制机制 容器数据销毁原理1. CoW 写时复制Copy-on-Write底层镜像文件只读容器修改文件时触发CoW机制当容器需要修改lower只读层自带文件不会直接改动底层文件而是先把文件完整复制到upper可写层再在副本上修改。挂载视图展示upper内修改后的新文件底层原始镜像文件保持原样保障多容器共享镜像互不干扰。2. 容器销毁数据丢失原理镜像所有只读层持久化保存在磁盘但是upper可写层仅属于当前运行容器执行docker rm删除容器时Docker会直接清理该容器专属的upper、work目录容器运行中新增、修改的所有数据全部永久丢失底层镜像只读层不受影响可被其他容器继续使用。

相关新闻

计算机毕业设计之大学生就业创业质量影响因素分析与评价系

计算机毕业设计之大学生就业创业质量影响因素分析与评价系

随着网络科学技术不断的发展和普及化,用户在寻找适合自己的信息管理系统时面临着越来越大的挑战。因此,本文介绍了一套大学生就业创业质量影响因素分析与评价系,在技术实现方面,本系统采用JAVA、HTML、CSS、JS以及MySQL数据库编程…

2026/9/20 13:33:44 阅读更多 →
一加手机刷KSU内核实现伪回锁:深度隐藏Root环境指南

一加手机刷KSU内核实现伪回锁:深度隐藏Root环境指南

这次我们来看一个针对一加手机的深度定制方案:通过刷入 KSU(KernelSU)内核来获取 Root 权限,并实现“伪回锁”以完美隐藏 Root 环境。对于追求系统极致自由又不想被银行、游戏等应用检测到的用户来说,这无疑是一个极具…

2026/9/17 11:41:46 阅读更多 →
深度解析|啤酒酿造之痛:啤酒总酸含量检测为何屡屡失准?

深度解析|啤酒酿造之痛:啤酒总酸含量检测为何屡屡失准?

行业背景与挑战在啤酒酿造/食品饮料的快速发展浪潮中,燕京啤酒始终走在行业前列。从啤酒酿造质控到成品出厂检验,其产品线对原料纯度的要求极为苛刻。这其中,啤酒总酸含量的检测尤为棘手。含气发酵饮料的特性使得常规检测手段频频失效&#x…

2026/9/12 10:55:47 阅读更多 →

最新新闻

3分钟看懂管理员工源码 一文搞懂权限核心逻辑

3分钟看懂管理员工源码 一文搞懂权限核心逻辑

3分钟看懂管理员工源码 一文搞懂权限核心逻辑 官方文档动辄几百页,翻来覆去还是抓不住“管理员工”这块硬骨头的重点?别急,今天咱们不念经,直接撕开源码包装纸,用 一文搞懂…

2026/9/22 4:26:52 阅读更多 →
3招搞定在线编码底层逻辑:告别文档迷宫,掌握最佳实践

3招搞定在线编码底层逻辑:告别文档迷宫,掌握最佳实践

3招搞定在线编码底层逻辑:告别文档迷宫,掌握最佳实践 官方文档那厚厚几百页,读完还是不会用?别急,这就是典型的“只见树木不见森林”。很多开发者陷入在线编码工具时,总想搞懂每一个 API…

2026/9/22 4:26:52 阅读更多 →
去非洲做生意性能优化实战:3步搞定环境配置

去非洲做生意性能优化实战:3步搞定环境配置

去非洲做生意性能优化实战:3步搞定环境配置 别再用 pip install 在服务器卡死半小时了。 去非洲做生意的IT部署,核心就是 性能优化 。 配置环境就卡半天,是大多数团队踩过的坑。 项目目标 我们要解决的不是代码逻辑,而是…

2026/9/22 4:26:52 阅读更多 →
k1216图解原理

k1216图解原理

k1216图解原理与性能优化实战指南 k1216图解原理与性能优化实战指南 刚入职第一周,我被派去维护一个老旧的内部系统。那个周末,我花了整整四个小时配置开发环境,结果因为依赖版本冲突,本地一直跑不起来。那种 配置环境就卡半天…

2026/9/22 4:26:52 阅读更多 →
蓝牙传照片慢到崩溃?这份性能优化速查手册救你

蓝牙传照片慢到崩溃?这份性能优化速查手册救你

蓝牙传照片慢到崩溃?这份性能优化速查手册救你 学会蓝牙协议栈的语法,却搞不定实际项目里照片传输卡顿、丢包、发热严重的问题?这种“纸上谈兵”的尴尬,每个搞嵌入式或移动开发的兄弟都遇到过。别慌,这篇速查手册不扯虚的,直接带你拆解蓝牙传照片的性能…

2026/9/22 4:26:52 阅读更多 →
28283手写实现避坑指南:复制代码跑不通?3分钟调通逻辑

28283手写实现避坑指南:复制代码跑不通?3分钟调通逻辑

28283手写实现避坑指南:复制代码跑不通?3分钟调通逻辑 刚把 GitHub 上那个热门的 28283 实战项目代码拷下来,运行报错,心凉半截?别慌,这种“复制来的代码跑不通不知道怎么调”的情况,90%…

2026/9/22 4:25:52 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →