Docker默认使用overlay2存储驱动,需确认内核支持(CONFIG_OVERLAY_FS=y)、文件系统为xfs/ext4(xfs需ftype=1),并通过/etc/docker/daemon.json配置storage-driver为overlay2并启用metacopy=on和index=on优化,最后重启docker服务。

Linux 容器技术(如 Docker)默认使用 OverlayFS 作为存储驱动,但它的配置不是手动挂载 mount -t overlay 那种方式,而是由容器运行时自动管理。真正要配置的是 容器引擎的存储驱动参数 和 底层文件系统准备。以下是实际、可靠、生产可用的配置路径:
确认内核与文件系统支持
OverlayFS 自 Linux 3.18 起内建支持,但容器场景强烈推荐使用 overlay2(overlay 的增强版,已取代旧版 overlay 驱动)。
- 检查内核是否启用:
zgrep CONFIG_OVERLAY_FS /boot/config-$(uname -r)→ 应返回CONFIG_OVERLAY_FS=y - 确保
/var/lib/docker所在分区使用 xfs 或 ext4(xfs 推荐开启d_type=1,否则可能不支持 readdir) - 验证 xfs 是否支持 d_type:
xfs_info /var/lib/docker | grep ftype→ 输出应含ftype=1
配置 Docker 使用 overlay2 驱动
Docker 默认在多数发行版中已启用 overlay2,但需显式确认并可选调优:
- 查看当前驱动:
docker info | grep "Storage Driver"→ 应显示overlay2 - 若未启用或需自定义,编辑
/etc/docker/daemon.json:
{
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true",
"overlay2.mountopt=metacopy=on,index=on"
]
}-
metacopy=on:加速元数据复制(尤其小文件多的场景) -
index=on:启用索引加速查找上层文件(提升读性能) - 保存后执行:
sudo systemctl daemon-reload && sudo systemctl restart docker
目录结构与权限准备(关键细节)
Docker 自动创建 /var/lib/docker/overlay2 下的 lowerdir(镜像层)、upperdir(容器写层)、workdir(内部工作区)和 merged(挂载点),但你需确保:
-
upperdir和workdir必须位于同一文件系统(Docker 自动保证) -
/var/lib/docker所在磁盘有足够空间(每层镜像 + 每个容器写层都会占用空间) - 避免将
/var/lib/docker放在 tmpfs 或 NFS 上(overlay2 不支持) - 若使用 SELinux,确保上下文正确:
sudo restorecon -Rv /var/lib/docker
验证与调试
启动一个容器后,可直观看到 overlay2 层结构:
- 运行:
docker run -d --name test nginx - 查容器 overlay2 目录:
docker inspect test | grep MergedDir→ 返回类似/var/lib/docker/overlay2/abc.../merged - 进入该 merged 目录:
sudo ls -l /var/lib/docker/overlay2/abc.../merged,即可看到镜像层 + 容器修改的合并视图 - 检查挂载:
findmnt -t overlay2或mount | grep overlay2
不复杂但容易忽略。核心不是手动挂载,而是让容器运行时在合规环境下自动启用并优化 overlay2。


















