在Linux上,docker守护进程有几种不同的镜像层存储驱动程序支持:aufs,devicemapper,btrfs,zfs,overlay,overlay2,和fuse-overlayfs。
该aufs驱动程序是最早的,但是基于Linux内核补丁集,该补丁集不太可能合并到主内核中。还已知这些会导致严重的内核崩溃。但是,aufs允许容器共享可执行文件和共享库内存,因此在使用相同程序或库运行数千个容器时,这是一个有用的选择。
该devicemapper驱动程序使用自动精简配置和写时拷贝(全体)的快照。通常,对于每个devicemapper图形位置, /var/lib/docker/devicemapper基于两个块设备创建一个精简池,一个用于数据,另一个用于元数据。
默认情况下,这些块设备是通过使用自动创建的稀疏文件的环回安装来自动创建的。有关如何自定义此设置的方法,请参阅下面的Devicemapper选项。 〜jpetazzo /使用Device Mapper插件调整Docker容器大小的 文章介绍了如何在不使用选项的情况下调整现有设置。
该btrfs驱动程序的运行速度非常快docker build-但就像devicemapper 在设备之间不共享可执行内存一样。使用 dockerd -s btrfs -g /mnt/btrfs_partition。
该zfs驱动程序的速度可能不及该驱动程序,btrfs但其稳定性方面的记录更长。由于Single Copy ARC克隆之间共享的块,因此将仅缓存一次。使用dockerd -s zfs。zfs.fsname如ZFS options中所述,选择不同的zfs文件系统set选项。
这overlay是一个非常快速的联合文件系统。从3.18.0开始,它现在已合并到主要的Linux内核中。overlay 它还支持页面缓存共享,这意味着访问同一文件的多个容器可以共享一个(或多个)页面缓存条目,这使得 overlay内存与aufs驱动程序一样高效。打电话dockerd -s overlay 使用它。
它们overlay2使用相同的快速联合文件系统,但是利用Linux内核4.0中添加的 其他功能来避免过多的inode消耗。
该fuse-overlayfs驱动程序类似于overlay2但在用户空间中工作。该fuse-overlayfs驱动程序应用于无根模式。
在Windows上,Docker守护程序根据映像平台支持单个映像层存储驱动程序:windowsfilter对于Windows映像,以及 lcow对于Windows上的Linux容器。