docker 存储管理
容器存储方案
docker 容器存储解决方案
存储驱动
由存储驱动实现的联合文件系统
外部挂载卷
以外部挂载卷为代表的持久化存储
docker 存储驱动
docker 镜像和容器的分层结构,就是由 docker 存储驱动来实现的
基本概述
存储驱动控制镜像和容器在 docker 主机上的存储和管理方式
联合文件系统
Union file systems (UnionFS),为Linux、FreeBSD、NetBSD 操作系统设计的,将其他文件系统合并到一个联合挂载点的文件系统,是 docker 重要的底层技术之一,可以通过创建层进行操作,轻巧和快速。
联合文件系统的多种变体
- AUFS
- Over;ayFS
- Btrfs
- BFS
- DeviceMapper等
存储驱动
- aufs
- overlay
- overlay2
- devicemapper
- btrfs
- zfs
- vfs等
联合文件系统实际是由存储驱动来实现的----》
存储驱动的选择原则
- 生产环境使用具有最佳整体性能和稳定性的存储驱动
- 内核支持多个存储驱动,存储驱动选择顺序在 docker 的源代码中定义
- 优先使用 linux 发行版默认的存储驱动,docker 在安装的时候会根据当前系统的配置选择默认的存储驱动,默认驱动有好的稳定性,已经在发行版上经过了严格的测试
- 个别存储驱动要求使用特定格式的底层文件系统
- 选择存储驱动要取决于工作负载的特征和所需的稳定性级别
主流的 docker 存储驱动
存储驱动类型 | 说明 |
---|---|
overlay2 | 当前主流Linux发行版的首选存储驱动,不需要额外配置(ubuntu14.04不支持) |
aufs | docker 18.06以前版本,aufs首选,只支持 ubuntu和debian,需要安装额外的包 |
devicemapper | 以前centos和红帽推荐的存储驱动,现在不是了,性能有点问题 |
btrfs、zfs | 依赖底层文件系统的正确配置,需要更多投入的维护和设置 |
vfs | 用于测试,适合那些没有“写时拷贝”的文件系统,不过性能差,不推荐生产环境 |
docker 版本支持的存储驱动
- 基本建议的存储驱动都是 overlay2
底层文件系统
backing filesystem,就是/var/lib/docker (默认)所在的文件系统
存储驱动 | 支持的底层文件系统 |
---|---|
overlay2、overlay | fstype=1的xfs和ext4 |
aufs | xfs ext4 |
devicemapper | direct-lvm |
btrfs | btrfs |
zfs | zfs |
vfs | 任何文件系统 |
检查当前存储驱动
docker info | grep "Storage Driver"
overlay2 存储驱动
OverlayFS
- 类似于 AUFS 的现代联合文件系统
- 比 AUFS 速度更快,实现更简单
- Linux3.18版本开始,OverlayFS 进入 Linux 内核主线,内核模块中的名称从 overlayfs 变成了 overlay
- docker 提供的存储驱动版本:最初的 overlay 和更高效稳定的 overlay2