在 CentOS 上使用 overlay(OverlayFS)时,需要的权限和前提条件主要取决于你用在什么场景(比如 Docker 存储驱动、手动 mount、Kubernetes 等)。下面按常见情况说明。
OverlayFS 从 CentOS 7(3.10+ 内核) 开始支持,但早期可能有坑,推荐:
查看是否支持:
cat /proc/filesystems | grep overlay
或
modprobe overlay
lsmod | grep overlay
✅ 需要 root 权限(modprobe / mount)
手动挂载 overlay:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
需要的权限:
CAP_SYS_ADMIN 的容器/进程普通用户 不能直接 mount overlay
overlay 对目录有严格要求:
/lower # 只读层(可多个)
/upper # 读写层(必须可写)
/work # 工作目录(必须为空)
/merged # 挂载点
upper 和 work:
work 目录:
示例:
mkdir -p /overlay/{lower,upper,work,merged}
chmod 700 /overlay/upper /overlay/work
⚠️ SELinux 下还要注意上下文
CentOS 默认开启 SELinux,overlay 经常踩坑。
如果遇到:
Permission denied
可检查:
getenforce
临时解决(不推荐生产):
setenforce 0
正确做法:
semanage fcontext -a -e /var/lib/docker /overlay
restorecon -Rv /overlay
或在 fstab / mount 选项加:
context="system_u:object_r:container_file_t:s0"
Docker 推荐 overlay2
要求:
/var/lib/docker 所在文件系统支持:
d_type)检查:
xfs_info / | grep ftype
应为:
ftype=1
Docker 会以 root 运行,无需你手动给权限。
如果在容器中挂载 overlay:
--privileged--cap-add SYS_ADMIN示例:
docker run --privileged \
-v /mnt:/mnt \
centos mount -t overlay overlay -o ...
| 项目 | 是否需要 |
|---|---|
| root 权限 | ✅ 必须 |
| CAP_SYS_ADMIN | ✅(非 root 时) |
| upper/work 可写 | ✅ 必须 |
| work 为空 | ✅ 必须 |
| SELinux 配置 | ⚠️ 常踩坑 |
| 同文件系统 | ⚠️ 老内核要求 |
如果你能告诉我:
我可以直接帮你定位具体权限问题。