在 CentOS 上使用 overlay(常见于 Docker overlay2 存储驱动、OverlayFS 挂载)时出错,排查思路基本是“看报错 → 定位层 → 逐步排除”。下面按常见场景给你一套可直接照做的排查清单。
先搞清楚是哪一种,命令不同:
docker info | grep -i storage
mount | grep overlay
ctr plugins ls
overlay: failed to mount典型原因:
✅ 解决:
uname -r
# 需 ≥ 3.10(CentOS 7 一般 OK)
检查是否启用了 overlay 模块:
lsmod | grep overlay
modprobe overlay
若 modprobe 报错 → 换内核或升级系统。
storage-driver overlay2 not supported常见于:
/var/lib/docker 在 NFS / NTFS / tmpfs✅ 解决:
df -T /var/lib/docker
必须是:
ext4 或 xfs
如果不是:
systemctl stop docker
mkfs.xfs /dev/sdX
mount /dev/sdX /var/lib/docker
systemctl start docker
permission denied / operation not permitted常见于:
✅ 解决: 临时关闭测试:
setenforce 0
永久(谨慎):
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
确认目录权限:
ls -ld /var/lib/docker
chmod 711 /var/lib/docker
missing lowerdir / upperdir / workdir手动 mount overlay 时常见错误:
❌ 错误示例:
mount -t overlay overlay -o lowerdir=/a,upperdir=/b,workdir=/c /mnt
✅ 要求:
workdir 必须为空目录upperdir 必须存在lowerdir 必须存在正确示例:
mkdir -p /overlay/{lower,upper,work,mnt}
mount -t overlay overlay \
-o lowerdir=/overlay/lower,upperdir=/overlay/upper,workdir=/overlay/work \
/overlay/mnt
overlay2: the backing xfs filesystem is formatted without d_type这是 CentOS 7 老系统经典坑。
✅ 解决:
xfs_info /var/lib/docker | grep ftype
如果不是 ftype=1,必须重新格式化:
mkfs.xfs -n ftype=1 /dev/sdX
uname -r
lsmod | grep overlay
df -T /var/lib/docker
xfs_info /var/lib/docker | grep ftype
docker info
journalctl -u docker -n 50
你可以把完整报错信息贴出来,例如:
docker start 报错mount 报错journalctl 日志我可以按你的CentOS 版本 + 使用场景(Docker / K8s / 手动 overlay)给你精确修复命令。