目录
一、概念
1、docker存储驱动与联合文件系统:
联合文件系统是一种为Linux、freeBSD和NetBSD操作系统设计,将其他文件系统联合挂载点的文件系统
※ Docker引擎可以使用联合文件系统的多种变体
※ AUFS
※ OverlayFS
※ Btrfs
※ BFS
※ DeviceMapper联合文件系统实际上是由存储驱动实现的
2、选择存储驱动需考虑的其他事项
共享存储系统
※ 多数情况下Docker可以在SAN、NAS、硬件RAID或其他共享存储系统上工 作,但Docker并没有与它们紧密集成。
※ 每个Docker存储驱动都基于Linux文件系统或卷管理器。稳定性:
※ overlay2、aufs、overlay和devicemapper存储驱动的稳定性更高。测试工作负载:
※ 在不同的存储驱动上运行工作负载时,可以测试Docker的性能。
二、驱动器的类型及其底层文件系统
1、适合工作负载
※ aufs、overlay和overlay2存储驱动的所有操作都在文件级而不是块级,能更有效地使用内存,但容器的可写层可能在写入繁重的工作负载中变得相当大。
※ 块级存储驱动(如devicemapper、btrfs和zfs存储驱动)在写入繁重的工作负载时表现得更好。
※ 写入大量的小数据,或有很多层的容器,或深层文件系统,overlay存储驱动比overlay2存储驱动性能更好。
※ btrfs和zfs存储驱动需要更多内存。
※ zfs存储驱动是高密度工作负载(如PaaS)的理想选择※ overlay2、aufs、overlay和devicemapper存储驱动的稳定性更高。
※ 在不同的存储驱动上运行工作负载时,可以测试Docker的性能。
三、Docker存储的挂载类型
※ 默认在容器中创建的所有文件保存在可写的容器层中,这类存储的问题如下。
※ 此类存储只在容器的生命周期内存在,会随着容器的删除而被删除。
※ 如果主机上的其他进程需要访问容器中的数据,则很难从容器中获取数据。
※ 容器的可写层与运行容器的主机紧密耦合,无法轻松地将数据转移到其他地方。
※ 写入容器的可写层需要Docker存储驱动来管理文件系统。
※ 卷有助于解决这些问题。
※ 卷本质上是Docker主机文件系统中的目录或文件,能够直接被挂载到容器的文件系统中。
※ 对卷的读写操作会绕过存储驱动,并以本地主机的速度运行。
四、 使用docker卷
1、卷的优势
相比绑定挂载:
※ 卷比绑定挂载更容易备份和迁移。
※ 可以通过Docker命令行或Docker API对卷进行管理。
※ 卷在Linux容器和Windows容器中都可以工作。
※ 在多个容器之间共享时,卷更为安全。
※ 卷驱动支持在远程主机或云端存储卷,加密卷内容,以及增加其他功能。
※ 新卷的内容可以由容器预填充。
2、-v与--mount的选项使用
※ -v的语法使用: -v [host-src:]container-dest[:<options>]
※ --mount的语法使用:--mount <key>=<value>,<key>=<value>,……(使用较少,一般用于实验)
※ -v用于独立容器
※ --mount用于集群服务
※ --mount与-v两者最大的不同在于-v的用法是将所有选项组合在一个字段中,而--mount的用法是将它们分开。