存储驱动选择
Docker 存储驱动管理镜像层和容器文件系统,下面介绍常见驱动与选择。
常见存储驱动
overlay2(推荐)
Bash
# 查看当前驱动
docker info | grep "Storage Driver"
# 输出
Storage Driver: overlay2
特点:
- Linux 内核 4.0+ 默认支持
- 性能优秀,支持大多数现代 Linux 发行版
- 内存和 CPU 开销低
- 支持层共享,节省磁盘空间
aufs
Bash
# 仅 Debian/Ubuntu 支持
Storage Driver: aufs
特点:
- 早期 Docker 默认驱动
- 性能良好,但不在主线内核
- 仅 Debian/Ubuntu 系列支持
- 已逐步被 overlay2 替代
devicemapper
Bash
# CentOS/RHEL 旧版默认
Storage Driver: devicemapper
特点:
- 适用于旧版内核
- 性能较差,内存开销大
- 已不推荐使用,应迁移到 overlay2
btrfs/zfs
Bash
# 适用于特殊文件系统
Storage Driver: btrfs
Storage Driver: zfs
特点:
- 支持快照、压缩等高级特性
- 需要对应文件系统支持
- 适合高级用户和特殊需求
驱动对比
| 驱动 | 内核要求 | 性能 | 推荐度 | 适用系统 |
|---|---|---|---|---|
| overlay2 | 4.0+ | 高 | ✅ 推荐 | 大多数 Linux |
| aufs | 任意 | 高 | ⚠️ 旧 | Debian/Ubuntu |
| devicemapper | 任意 | 低 | ❌ 不推荐 | CentOS/RHEL |
| btrfs | 3.0+ | 中 | ⚠️ 特殊 | 需要 btrfs |
| zfs | 任意 | 中 | ⚠️ 特殊 | 需要 zfs |
切换驱动
Bash
# 停止 Docker
sudo systemctl stop docker
# 修改配置
# /etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
# 删除旧数据(警告:会丢失所有镜像和容器)
sudo rm -rf /var/lib/docker
# 启动 Docker
sudo systemctl start docker
切换存储驱动会删除所有现有镜像和容器,需谨慎操作。
查看驱动状态
Bash
# 查看驱动详情
docker info
# 输出
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
推荐配置
JSON
{
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
内核 4.0+ 系统强烈推荐使用 overlay2。
要点总结
- overlay2 是现代 Linux 的推荐驱动,性能优秀
- aufs 仅 Debian/Ubuntu 支持,已逐步淘汰
- devicemapper 性能差,不建议使用
- 切换驱动会丢失所有镜像和容器,需备份
- 使用
docker info查看当前驱动状态
📝 发现内容有误?点击此处直接编辑