Linux 的 Overlay(OverlayFS) 是一种联合文件系统(Union Filesystem),它的主要作用是可以把多个目录(层)叠加在一起,让用户和应用程序看到一个统一的目录视图。
简单来说:
把“只读层”和“可写层”叠在一起,读的时候从上往下找,写的时候只写到最上层。
Docker、Kubernetes、Podman 等容器运行时都依赖 OverlayFS。
典型结构:
upperdir(可写层) ← 容器运行时修改的文件
lowerdir(只读层) ← 镜像文件(如 ubuntu:22.04)
merged(统一视图) ← 容器里看到的文件系统
✅ 好处:
常用于:
例如:
你可以在不修改原系统的情况下:
如果出问题:
例如:
不同组合就能得到不同系统,而不复制多份文件。
目录结构示例:
/mnt/lower (只读)
/mnt/upper (可读写)
/mnt/work (内部使用)
/mnt/merged (最终看到的结果)
挂载命令:
mount -t overlay overlay \
-o lowerdir=/mnt/lower,upperdir=/mnt/upper,workdir=/mnt/work \
/mnt/merged
规则:
| 场景 | 说明 |
|---|---|
| Docker 容器 | 镜像层 + 容器层 |
| 系统恢复 | 只读根文件系统 |
| 安全沙箱 | 防篡改 |
| 快速测试 | 不污染原系统 |
| 嵌入式 | 节省存储空间 |
Linux Overlay 的作用,就是用最小的代价,把“原系统”和“修改内容”分开,又能让用户看到一个完整的系统。
如果你愿意,我也可以: