简短回答:会,CentOS 下配置 Overlay(OverlayFS)是“容易出错的”,尤其是在不同版本、不同存储驱动、不同初始化方式下。下面按常见场景 + 易错点 + 排查建议说明。
OverlayFS 依赖内核支持:
| CentOS 版本 | 内核 | Overlay 支持情况 |
|---|---|---|
| CentOS 7 | 3.10 | ✅ 支持,但老,限制多 |
| CentOS 8 | 4.18 | ✅ 更稳定 |
| CentOS Stream 9 | 5.x+ | ✅ 推荐 |
❌ 常见问题:
overlay2overlay2 却实际还在用 overlay✅ 检查:
uname -r
lsmod | grep overlay
{
"storage-driver": "overlay2"
}
但:
/var/lib/docker 在 不支持 overlay 的文件系统devicemapper,没有清理✅ 建议配置:
{
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
OverlayFS 不支持:
| 不支持 | 说明 |
|---|---|
| NFS | ❌ |
| tmpfs | ❌(部分情况) |
| 某些老 ext4 | ❌ 无 d_type |
✅ 检查:
df -T /var/lib/docker
✅ 推荐:
ext4xfs(必须开启 ftype=1)检查 XFS:
xfs_info / | grep ftype
✅ 必须是:
ftype=1
SELinux 会直接导致:
✅ 排查:
getenforce
✅ 临时验证:
setenforce 0
systemctl restart docker
✅ 永久解决(生产不推荐直接关):
sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
mount -t overlay overlay \
-o lowerdir=/a,upperdir=/b,workdir=/c \
/mnt
常见错误:
workdir 和 upperdir 在同一目录workdir 不存在lowerdir 顺序错误✅ 正确示例:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
Docker 升级后常见问题:
/var/lib/docker 残留✅ 排查:
docker info | grep -i storage
⚠️ 不要直接删除 /var/lib/docker(会丢数据)
# 1. 内核支持
uname -r
# 2. overlay 模块
lsmod | grep overlay
# 3. 文件系统
df -T /var/lib/docker
# 4. SELinux
getenforce
# 5. Docker 存储驱动
docker info | grep -i storage
✅ CentOS 7/8/Stream
xfs (ftype=1) 或 ext4overlay2permissive 或规则放行你可以直接告诉我:
docker info / journalctl -u docker)我可以精确帮你定位是哪一步出错,而不是泛泛而谈。