在 CentOS 上使用 overlay(常见于 Docker overlay2、OverlayFS 挂载、Kubernetes 存储)配置失败时,可以按下面思路逐步排查。
常见场景:
不同场景排查重点略有不同,但根因常集中在:
cat /proc/filesystems | grep overlay
或
lsmod | grep overlay
如果没有:
modprobe overlay
仍失败说明:
overlay 不支持:
ftype=1查看:
df -T
如果是 XFS:
xfs_info /var/lib/docker | grep ftype
必须是:
ftype=1
CentOS 7 常见坑:
默认 XFS 没开 ftype=1 → overlay2 必失败
mkdir -p /tmp/overlay/{lower,upper,work,merged}
mount -t overlay overlay \
-o lowerdir=/tmp/overlay/lower,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work \
/tmp/overlay/merged
失败看报错:
dmesg | tail
journalctl -xe
failed to start daemon: error initializing graphdriver
✅ 解决:
cat /etc/docker/daemon.json
确保:
{
"storage-driver": "overlay2"
}
然后:
systemctl restart docker
临时关闭测试:
setenforce 0
若成功:
vim /etc/sysconfig/selinux
SELINUX=permissive
或在 daemon.json:
{
"selinux-enabled": true
}
不要用:
建议:
mv /var/lib/docker /data/docker
ln -s /data/docker /var/lib/docker
检查:
containerd config default > /etc/containerd/config.toml
确认:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
snapshotter = "overlayfs"
重启:
systemctl restart containerd
| 报错 | 原因 |
|---|---|
| overlayfs: missing lowerdir | 目录不存在 |
| cannot mount overlay: invalid argument | workdir/upperdir 同分区 |
| overlay2 not supported | 内核或 ftype |
| permission denied | SELinux / 权限 |
你可以直接贴出:
cat /etc/redhat-release)我可以 精确告诉你哪一步错了,怎么改。