Overlay支持的存储驱动及关键说明
Overlay作为Docker的存储驱动体系,主要包括两类驱动:overlay(原始版本)和overlay2(更新、推荐的版本),均基于Linux内核的OverlayFS联合文件系统实现。其中,overlay2是当前Docker的主流选择,而overlay因技术局限性(如inode利用率低)已逐渐被取代。
1. overlay驱动
- 基础特性:是OverlayFS的早期Docker实现,依赖Linux内核3.18及以上版本,但不推荐用于生产环境(Docker EE明确不支持)。
- 后端文件系统要求:支持ext4、xfs等常见文件系统,但xfs需启用d_type=true(通过
xfs_info验证,ftype=1表示启用)。若xfs未启用d_type,Docker会跳过overlay驱动尝试,但现有安装可能继续运行(未来版本将致命错误)。
2. overlay2驱动
- 基础特性:是overlay的升级版本,针对性能(如inode利用率)、稳定性优化,支持Linux内核4.0及以上版本(或RHEL/CentOS 3.10.0-514及以上版本),是当前所有Linux发行版的推荐存储驱动。
- 后端文件系统要求:同样支持ext4、xfs,但必须启用d_type=true(xfs格式化时需添加
-n ftype=1参数)。此外,overlay2的性能优于overlay,尤其在处理多层镜像和频繁写操作时。
3. 两者共同注意事项
- 文件系统兼容性:均不支持btrfs、zfs、eCryptfs等文件系统(这些文件系统需搭配其他存储驱动,如btrfs对应btrfs驱动)。
- 迁移提醒:更换存储驱动(如从aufs切换到overlay2)会导致本地现有容器和镜像无法访问,需提前通过
docker save保存镜像或推送至私有仓库。
4. 补充说明
- fuse-overlayfs:是OverlayFS的FUSE(用户态文件系统)实现,支持更多文件系统(如NFS),但性能低于内核态的overlay/overlay2,通常用于特殊场景(如无内核支持的环境)。
- 选择建议:优先使用overlay2(需满足内核和文件系统要求),仅在旧系统(如内核<4.0)或特殊需求下使用overlay。