在 CentOS(以及更早版本的 Docker 默认存储驱动场景)中,overlay 和 devicemapper 都是 Docker 的存储驱动(storage driver),用于管理镜像层和容器层的文件系统。它们的实现原理、性能、稳定性和适用场景有明显区别。
下面从多个维度对比说明。
overlay(旧)overlay2(推荐,CentOS 7.4+)loop-lvm(测试,不推荐)direct-lvm(生产)| 对比项 | Overlay / Overlay2 | DeviceMapper |
|---|---|---|
| 实现方式 | 文件系统级(联合挂载) | 块设备级 |
| 内核依赖 | OverlayFS(3.18+ 稳定) | Device Mapper |
| 性能 | ✅ 通常更好 | ❌ 相对较慢 |
| 稳定性 | ✅ 高 | ⚠️ loop-lvm 不稳定 |
| 配置复杂度 | ✅ 简单 | ❌ direct-lvm 较复杂 |
| 磁盘占用 | 更高效 | 易浪费空间 |
| 生产推荐 | ✅ 强烈推荐 | ❌ 不推荐(新系统) |
| CentOS 默认 | CentOS 7.4+ 默认 overlay2 | 老版本默认 devicemapper |
镜像层(只读)
↓
容器层(可写)
↓
合并视图(容器看到的文件系统)
lowerdir(镜像层)+ upperdir(容器层)物理磁盘
↓
thin pool
↓
镜像快照 / 容器快照
devicemapperoverlay2devicemapper 被标记为不推荐devicemapperoverlay2devicemapper 已逐步废弃loop-lvm 模式:
ftype=1docker info | grep -i storage
或
cat /etc/docker/daemon.json
Overlay2 是文件系统级、轻量、高性能、现代 Docker 的首选;
DeviceMapper 是块设备级、复杂、老旧的方案,在新 CentOS 上已基本被淘汰。
如果你愿意,我可以: