理想的是,非常少的数据能够写入容器的writeable layer。对于大数据量,会使用Docker volume。
但是,有时仍然需要向容器的layer写入较多的数据,这就是storage driver的用处。
Docker支持多种storage driver,使用可插拔的架构。storage driver控制镜像和容器如何存储和管理。
选择storage driver通常需要考虑3个层次。
1。 如果kernel支持多个storage driver,Docker会优先顺序;如果没有明确指定storage dirver,首先需要满足下面的前提条件。
如果是最少的配置,可以选择btrfs或zfs,它们都依赖backing filesystem。
最为推荐的是overlay2,然后是overlay,它们都不需要额外的配置。而overlay2是Docker CE的默认选择。
devicemapper是接下来的选择,但是对于生产环境需要direct-lvm,因为在zero配置时,loopback-lvm性能并不好。
2。选择受限于Docker edition。
Docker CE支持的storage driver
Linux版本 | 推荐storage driver |
---|---|
Docker CE on Ubuntu | aufs,devicemapper,overlay,zfs,vfs overlay2(Ubuntu 14.04+、Ubuntu 16.04+) |
Docker CE on Debian | aufs,devicemapper,overlay,vfs overlay2(Debian Stretch) |
Docker CE on CentOS | devicemapper,vfs |
Docker CE on Fedora | devicemapper,vfs overlay(expermental) overlay2(Fedora 26+,experimental) |
如果可以的话,overlay2是推荐的storage driver。最开始安装Docker时,默认是aufs,现在默认是overlay2.
如果,希望继续使用aufs,则需要专门配置,并且安装额外的包,比如linux-image-extra
支持的backing filesystems
对于Docker,backing filesystem是/var/lib/docker/
的位置,但一些storage driver只能在某些backing filesystems下工作
Storage driver | 支持的backing filesystems |
---|---|
overlay,overlay2 | ext4,xfs |
aufs | ext4,xfs |
devicemapper | direct-lvm |
btrfs | btrfs |
zfs | zfs |
【参考】
1。docker官网:https://docs.docker.com/storage/storagedriver/select-storage-driver/