overlay2 和 UnionFS 的联系
先给结论👇
UnionFS 是“思想 / 技术类别”,overlay2 是“Linux 上的具体实现”。
UnionFS(联合文件系统)
├─ AUFS (早期 Docker 用,已淘汰)
├─ OverlayFS
│ └─ overlay2 ← Docker 默认
├─ btrfs
└─ zfs
结论:
- UnionFS:一类“把多层目录合并成一个视图”的文件系统思想
- overlay2:基于 Linux OverlayFS 的 Docker 存储驱动实现
多个目录 -> 看成一个目录
- 下层:只读(镜像层)
- 上层:可写(容器层)
- 合并后:进程只看到一个文件系统
- 分层(Layer)
- Copy-on-Write(写时复制)
- 共享只读层
👉 这是一个“设计思想 + 技术类别”,不是 Docker 专属
overlay2 = OverlayFS + Docker 的层管理规则
- OverlayFS:Linux 内核原生 UnionFS
- overlay2:Docker 对 OverlayFS 的使用方式
lowerdir = 镜像层(多个)
upperdir = 容器写层
workdir = 内核工作目录
merged = 最终视图
进程访问的其实是 merged
对比 UnionFS 其他实现:
| 方案 | 状态 | 原因 |
|---|---|---|
| AUFS | 淘汰 | 不进主线内核 |
| devicemapper | 弃用 | 复杂、性能差 |
| btrfs | 小众 | 运维成本高 |
| zfs | 特殊 | 依赖强 |
| overlay2 | ✅ 默认 | 内核原生、快、简单、稳 |
👉 overlay2 是“工程最优解”
| UnionFS | overlay2 |
|---|---|
| 抽象概念 | 具体实现 |
| 一类文件系统 | Docker 存储驱动 |
| 定义“怎么叠” | 真正“怎么干” |
| 可多种实现 | 只是一种实现 |
UnionFS 是联合文件系统的统称,overlay2 是 Docker 基于 Linux OverlayFS 实现的 UnionFS 存储驱动,也是当前默认和最推荐的实现。
overlay2 不是一个文件系统,而是 Docker 使用 OverlayFS 的方式。