在 CentOS 上 overlay 文件系统无法挂载,通常不是单一原因,而是几类常见问题叠加。下面按「最常见 → 较少见」给你一个系统排查清单。
CentOS 7 早期内核(< 3.18)不支持 overlay。
检查内核版本:
uname -r
✅ 建议:
如果是老内核:
yum update kernel
reboot
overlay 要求 lower / upper 所在目录的文件系统支持:
检查文件系统类型:
df -T
xfs 特别重要:
xfs_info / | grep ftype
如果不是 ftype=1:
ftype=0 ❌ overlay 无法使用
✅ 解决:重新格式化 xfs 并指定:
mkfs.xfs -n ftype=1 /dev/sdX
CentOS 默认开启 SELinux。
查看:
getenforce
临时测试:
setenforce 0
如果关闭后正常,需要:
semanage fcontext -a -e /var/lib/docker /your/overlay/path
restorecon -Rv /your/overlay/path
或允许容器使用 overlay:
setsebool -P container_manage_cgroup on
overlay 挂载要求:
错误示例:
mount -t overlay overlay \
-o lowerdir=/a,upperdir=/a,workdir=/work
✅ 正确:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/mnt
查看:
docker info | grep Storage
如果是 devicemapper:
vim /etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
systemctl restart docker
如果 /var/lib/docker 在:
都会失败。
| 报错 | 原因 |
|---|---|
mount: wrong fs type |
内核不支持 |
cannot mount overlay: No such device |
overlay 模块未加载 |
workdir and upperdir must be different |
目录配置错误 |
overlay: lowerdir is not a directory |
lower 不存在 |
SELinux: mount invalid |
SELinux 限制 |
uname -r
cat /proc/filesystems | grep overlay
df -T
xfs_info / 2>/dev/null | grep ftype
getenforce
你可以直接贴出:
我可以帮你精确定位是哪一条原因。