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

docker容器的三大核心技术UnionFS(下) - 指南

2. OverlayFS 与 Overlay2
OverlayFS 是 Linux 内核 3.18 引入的内核级联合文件系统,直接基于内核搭建,性能优于 AUFS;Overlay2 是 OverlayFS 的改进版,支持最多 128 个只读层,解决了 OverlayFS 分层数量限制的问题,成为 Docker 默认存储驱动。
(1)核心原理与分层结构
核心组件:
lowerdir:多个只读层的集合(对应 Docker 镜像层),优先级从左到右递减。
upperdir:可写层(对应 Docker 容器的可写层,存储容器运行时的修改)。
workdir:临时工作目录(用于 OverlayFS 内部操作,如文件重命名、复制,必须为空且独占)。
merged:统一挂载点(容器内看到的根文件系统视图)。
与 AUFS 的关键差异:
OverlayFS 原生支撑 “1 个可写层 + N 个只读层”,Overlay2 通过嵌套叠加支持更多只读层(最多 128 层)。
依赖内核实现,无需用户态适配,IO 性能更高。
(2)实操示例:OverlayFS 挂载与验证
创建测试目录结构:
bash
mkdir overlay-test && cd overlay-test
mkdir layer1 layer2 upperlayer workdir mountedfs # workdir 为临时工作目录
echo "content for file1 in layer1" > layer1/file1
echo "content for file1 in layer2" > layer2/file1
echo "content for file2 in layer1" > layer1/file2
echo "content for file3 in layer2" > layer2/file3
挂载 OverlayFS 文件系统:
bash
mount -t overlay -o lowerdir=layer1:layer2,upperdir=upperlayer,workdir=workdir overlay mountedfs
# 参数说明:-o 指定 lowerdir/upperdir/workdir 路径;overlay 为文件系统类型
验证核心特性:
读取 mountedfs/file1,返回 layer1 中的内容(左侧优先级更高)。
在 mountedfs 中修改 file1,实际修改的是 upperlayer/file1,layer1/file1 保持不变(写时复制)。
查看 workdir,会生成临时文件(用于 OverlayFS 内部处理,用户无需手动操作)。
(3)Docker 中 Overlay2 的实际应用
以 Alpine 镜像创建容器为例,验证 Overlay2 在 Docker 中的存储结构:
启动容器:
bash
docker run --name conoverlay --rm -id alpine ash # 启动 Alpine 容器,容器 ID 假设为 6f8973ac28d6
查看 Overlay2 挂载信息:
bash
# 查看容器对应的 Overlay2 挂载点
mount | grep overlay
# 输出示例(关键路径解析):
# overlay on /var/lib/docker/overlay2/<mount-id>/merged type overlay(...)
# - <mount-id>:随机 ID,对应容器的 Overlay2 存储目录
# - merged:容器根文件系统的挂载点(统一视图)
# - lowerdir:镜像只读层路径;upperdir:容器可写层路径;workdir:临时工作目录
定位容器存储目录:
Docker 为每个容器在 /var/lib/docker/image/overlay2/layerdb/mounts/ 下创建以容器 ID 命名的目录,内含 mount-id 文件(记录 <mount-id>)。
通过 <mount-id> 可找到 /var/lib/docker/overlay2/<mount-id>/ 目录,包含 merged(挂载点)、diff(即 upperdir,可写层)、work(即 workdir)。
三、UnionFS 在 Docker 镜像与容器中的核心应用
1. 镜像分层构建
Docker 镜像通过 Dockerfile 构建,每一条 Dockerfile 命令(如 FROM、COPY、RUN)都会生成一个只读镜像层,这些层通过 UnionFS 叠加形成完整的镜像文件系统。例如:
dockerfile
FROM python:3.12-slim # 基础镜像层(只读)
WORKDIR /app # 生成新的只读层
COPY requirements.txt . # 生成新的只读层
RUN pip install -r requirements.txt # 生成新的只读层
COPY . . # 生成新的只读层
优势:不同镜像可共享基础层(如多个 Python 应用共享 python:3.12-slim 基础层),减少磁盘占用;修改镜像时仅需重新构建变更层,提升构建效率。
2. 容器运行时数据管理
容器启动时,Docker 基于镜像的只读层,通过 UnionFS 创建一个可写层(如 Overlay2 的 upperdir):
容器内的文件修改、创建、删除操作,均作用于可写层,底层镜像层保持不变。
容器删除时,仅需删除可写层,镜像层可重复用于其他容器,实现 “一次构建,多次运行”。
四、UnionFS 关键技术总结
特性 AUFS Overlay2(推荐)
内核依赖 用户态实现,需额外内核补丁 内核原生支持(Linux 4.0+)
分层数量限制 无明确限制,但层越多性能越差 支持最多 128 个只读层
性能 中等(用户态 IO 转发) 优秀(内核级 IO 处理)
写时复制(CoW) 支持 支持
删除屏蔽(Whiteout) 基于 .wh.* 文件 基于 .wh.* 档案
Docker 默认支持 早期支持,需手动开启 默认存储驱动(Docker 18.09+)
Docker 完成 “轻量级虚拟化” 的关键技术之一。就是UnionFS 作为 Docker 存储的底层核心,通过分层叠加和写时复制机制,平衡了镜像的复用性、容器的灵活性和资源的高效性,

http://www.gsyq.cn/news/18362.html

相关文章:

  • P13274 [NOI2025] 三目运算符
  • B2002 Hello,World!【入门】
  • 华为链路聚合配置
  • iOS 26 软件性能测试全流程,启动渲染资源压力对比与优化策略 - 详解
  • 手机adb 调试自己
  • 2025 年公共/商场/学校/地铁/电影院/会所/机场/卫生间隔断厂家选购指南:优质厂商推荐与实用选择策略
  • Java环境安装备忘录
  • 详细介绍:标准型ELN成主流:定制型为何“遇冷”?
  • 【Linux】Ext系列文件系统(下) - 实践
  • 2025 年水产养殖降氨氮亚盐厂家最新推荐排行榜 ,助力北方对虾鱼塘螃蟹池塘养殖户轻松选购优质产品
  • 2025 年玻璃钢水箱生产厂家最新推荐榜单:含 30 吨 / 订做 / 消防 / 方形 / 拼装式 / 屋顶 / 大型产品,从产能与服务双维度精选优质企业
  • crontab 定时执行python脚本失败,但手动执行却成功问题处理 - hello-*
  • 2025 年不锈钢水箱厂家最新推荐榜:优质厂家实力对比与选购指南,助您选到适配设备矩形/屋顶/定做方形不锈钢水箱厂家推荐
  • 实用指南:Java 后端面试技术文档(参考)
  • 2025 年钢结构厂家最新推荐榜:优质企业全面解析,助力客户精准选择可靠合作伙伴
  • 2025规划馆运营厂家 TOP 榜:苏州金梓树智能科技,专注场馆全周期服务,规划馆运维优质服务商推荐!
  • 2025 高温线缆厂家 TOP 榜:奇温线缆 (上海) 有限公司,专注特种高温领域,定制化高温线缆源头厂家推荐!
  • OI 笑传 #17
  • 实用指南:Python Tkinter构建交互式精灵表切割桌面应用程序:将精灵表分割成单个帧的功能
  • 题解:qoj7979 棋盘
  • 2025 年最新推荐微波干燥设备生产厂家排行榜,覆盖多行业高效干燥解决方案权威推荐黄粉虫/黑水虻/中药材/茶叶微波干燥设备厂家推荐
  • 控制台
  • 2025 年最新三维扫描仪厂家权威排行榜:聚焦高精度与多场景适配,为企业与个人用户精选优质品牌推荐高精度/专业/手持激光/工业/便携式三维扫描仪厂家推荐
  • 2025 年最新推荐!国内优质充电桩厂家排行榜,涵盖多场景适配产品,助用户精准选靠谱品牌智能/新能源/电动车/重卡/电动车直流充电桩厂家推荐
  • 实用指南:【图像算法 - 28】基于YOLO与PyQt5的多路智能目标检测系统设计与实现
  • 常用接口对比
  • 工具网站网址
  • 2025 电缆回收推荐榜:广州龙耀 5 星领跑,这些企业适配绿色循环需求
  • MOE模型
  • 2025航空插头厂家最新推荐榜:M8 航空插头, m12航空插头, 航空插头公母对接, 航空插头5芯, 航空插头三芯, 航空插头4芯, 航空插头12芯等类型全覆盖,专业定制与可靠品质