Docker存储驱动之总览

  本文会介绍Docker存储驱动的特性,别列出现在已经支持的存储驱动,最后,会介绍如果选型适合你的存储驱动。

可插拔的存储驱动架构

  Docker的存储驱动架构是可插拔的,可以让你很方便的将适合你环境和用例的存储驱动“插进”Docker。每个Docker存储驱动都建立在一种Linux文件系统或者卷管理系统之上,也可以很自由地按照其自己的方法去实现镜像层和容器层的管理。也就是说一些存储驱动在不同的场景下会比其他的驱动性能更好。
  一旦你决定了哪种驱动最合适,你就可以Docker daemon启动之前设置驱动到Docker中,这样你就可以在该存储驱动上运行Docker daemon了,所有新容器都会使用这个驱动来创建了。下图显示了支持的驱动技术和它们对应的Docker存储驱动名称。
  

TechnologyStorage driver name
OverlayFS   overlay / overlay2  
AUFS   aufs  
Btrfs   btrfs  
Device Mapper   devicemapper  
VFS   vfs  
ZFS   zfs  

  可以通过docker info命令来查看当前daemon使用着哪种存储驱动。

$ docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 1 Server Version: 1.12.6 Storage Driver: overlay2 Backing Filesystem: extfs ... output truncated ...

  上面的输出表示,Docker daemon使用overlay2作为存储驱动,而其Backing Filesystem是extfs。也就是说,在我的环境中,overlay2存储驱动是在ext文件系统上操作的。后端文件系统指的是创建了Docker host的本地存储区域/var/lib/docker的文件系统。
  存储驱动,可以运行在某种后端文件系统上,但也有些不支持的后端文件系统,它们之间的对应关系如下表:

Storage driver后端文件系统不支持的后端文件系统
overlay   ext4 xfs   btrfs aufs overlay zfs eCryptfs  
overlay2   ext4 xfs   btrfs aufs overlay zfs eCryptfs  
aufs   ext4 xfs   btrfs aufs eCryptfs  
btrfs   btrfs only   N/A  
devicemapper   direct-lvm   N/A  
vfs   debugging only   N/A  
zfs   zfs only   N/A  

  想要设置存储驱动,可以在dockerd启动的时候加入--storage-driver=

$ dockerd --storage-driver=devicemapper & $ docker info Containers: 0 Images: 0 Storage Driver: devicemapper Pool Name: docker-252:0-147544-pool Pool Blocksize: 65.54 kB Backing Filesystem: extfs Data file: /dev/loop0 Metadata file: /dev/loop1 Data Space Used: 1.821 GB Data Space Total: 107.4 GB Data Space Available: 3.174 GB Metadata Space Used: 1.479 MB Metadata Space Total: 2.147 GB Metadata Space Available: 2.146 GB Thin Pool Minimum Free Space: 10.74 GB Udev Sync Supported: true Deferred Removal Enabled: false Data loop file: /var/lib/docker/devicemapper/devicemapper/data Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata Library Version: 1.02.90 (2014-09-01) Execution Driver: native-0.2 <output truncated>

  存储驱动的选择会影响你容器应用的性能,所以很有必要理解存储驱动之间的区别和优缺点,然后才能选择合适的驱动。

共享存储系统和存储驱动

  很多企业都从共享文件系统(如SAN和NAS)中获取存储资源。通常情况下,这都能带来更好的性能和更高可用性,还有如超配、副本删除、压缩等高级特性。
  Docker存储驱动和数据卷都可以运行在这些共享存储系统提供的存储上,这使得Docker可以利用这些系统提供的优越性能和可用性。

使用哪种存储驱动呢?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b7dcca4184f6f84b01c89fdb36df3252.html