【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/22 4:27:43 阅读更多 →
一加手机刷KSU内核实现伪回锁:深度隐藏Root环境指南

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

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

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

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

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

2026/9/29 22:12:17 阅读更多 →

最新新闻

AI Agent实战指南:从架构设计到工程落地的核心要点

AI Agent实战指南:从架构设计到工程落地的核心要点

1. 从"会聊天的模型"到"能办事的Agent":认知先对齐很多人第一次接触 AI Agent,脑子里浮现的还是那个对话框——你问一句,它答一句,答完就结束。但如果你真拿这种心态去搭 Agent,大概率会在第三天就…

2026/10/14 21:43:45 阅读更多 →
iOS社交应用如何通过App Store 4.3审核:从被拒原因到差异化避坑指南

iOS社交应用如何通过App Store 4.3审核:从被拒原因到差异化避坑指南

"4.3被拒了,App Store审核组说我的应用与其他应用存在大量雷同,属于垃圾应用。"这句话我今年已经听不止一个人说过了。社交应用是4.3的重灾区,不管你做的是兴趣社区、同城交友、泛娱乐聊天室还是垂直圈层App,只要你提交…

2026/10/14 21:43:45 阅读更多 →
HDFS架构原理与运维实战:从副本机制到Shell命令避坑指南

HDFS架构原理与运维实战:从副本机制到Shell命令避坑指南

HDFS这玩意儿在圈子里算得上"老贵族"了——平时不显山露水,但整个大数据生态的数据底座都压在它身上。不管是离线数仓的日分区清洗,还是实时链路落地的中间结果,最终都要老老实实落到HDFS的块上。这篇不聊教科书里那些干巴巴的定义…

2026/10/14 21:43:45 阅读更多 →
蓝桥杯省赛冲刺:一天掌握模拟、set与map的实战技巧

蓝桥杯省赛冲刺:一天掌握模拟、set与map的实战技巧

1. 写在最前面:这24小时到底该怎么用作为一个参加过好几届蓝桥杯、也带过不少学弟学妹临时抱佛脚的人,我先说句实话:如果你只剩一天,别指望学会所有的算法,但一定要把"模拟、set、map"这三个词焊死在脑子里。…

2026/10/14 21:43:45 阅读更多 →
TypeScript运行时校验实战:用impeccable给数据加一道保险

TypeScript运行时校验实战:用impeccable给数据加一道保险

上个月我负责的一个小工具上线没几天,就有用户反馈说页面打开是空白的。控制台报错指向Cannot read properties of undefined (reading name),追到根因后我发现:后端悄悄改了接口字段,而 TypeScript 的编译期检查在这里完全失效。…

2026/10/14 21:43:45 阅读更多 →
Android项目结构详解:从Gradle构建到App启动的完整认知

Android项目结构详解:从Gradle构建到App启动的完整认知

第一次用IDE创建Android项目时,我对着自动生成的一堆文件夹发了好一会儿呆。明明只想写一个“你好,世界”,可工程里却躺着settings.gradle、build.gradle、gradlew、local.properties,还有一个看起来很重要又不敢随便动的MainActi…

2026/10/14 21:42:43 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →