Docker存储驱动的选择

翻译自官网:Docker storage drivers

名词解释

英文 中文
Storage drivers 存储驱动
理想的状态是,几乎没有数据会被写入容器可写层,而且使用Docker volumes来写数据。但是,一些工作场景要求你可以在容器可写层写入数据。这就引入了下面的存储驱动。
Docker 利用可插拔的架构支持几个不同的存储驱动。这种存储驱动在Docker宿主机上控制了镜像和容器的管理和存储。
当你读了storage driver overview之后,下一步就是为你的工作场景选择最好的存储驱动。为了做出这个选择,你需要考虑下面三个高级别的因素:
  • 如果你的内核支持多种驱动,而且你没有在Docker配置指定某种存储驱动,Docker会根据下面场景列出存储驱动的优先级。

    • 如果可能,使用最小配置量的存储驱动,比如 btfs 或者 zfs
    • 否则,在大多数应用场景下尝试使用最佳综合性能的存储驱动。
      • 首选overlay2, 次之overlay。这两者都不需要额外的配置。
      • devicemapper可以作为第三选择,但是在生产环境推荐 direct-lvm,因为 loopback在零配置时性能极差。
    • 这些选择的顺序已经在Docker源码中定义好了。你可以在Docker CE 18.03 源码 查看这个顺序。你可以通过使用顶部的试图选择不同分支来查看不通版本。
  • 你的选择往往要考虑Docker版本、操作系统和部署。例如,aufs 只支持UbuntuDebian,而或许需要安装额外的包。btrfs 只支持 SLES, 并且只适用Docker EE。参考 Support storage drivers per Linux distribution。如下文中Docker CE的支持。

  • 一些存储驱动需要你在后台文件系统使用特殊格式。如果你的文件系统有其他特殊要求,这将会限制你的选择。参考Supported backing filesystems。 如下:

Storage driver Supported backing filesystems
overlay, overlay2 ext4, xfs
aufs ext4, xfs
devicemapper direct-lvm
btrfs btrfs
zfs zfs
  • 如果你已经通过自己的工作环境条件和稳定性的需求,缩小了选择范围。可以参考 Other considerations 做出最终选择。

每个Linux发行版所支持的存储驱动

Supported storage drivers per Linux distribution

最重要的是,你的Docker版本首先决定了支持哪些存储驱动
其次,Docker不推荐你因某些配置而关闭你的系统安全防护。比如你在CentOS上使用 overlay或者overlay2时关掉 selinux

Docker EE和 CS-Engine

对于Docker EE和 CS-Engine, Product compatibility matrix 可以明确说明哪些存储驱动是被支持的。你必须使用可行的配置才能获得Docker商业支持。

Docker CE

对于Docker CE, 只有一些配置是验证过的,可能你的操作系统内核并不支持所有的存储驱动。Linux发行版通常使用下面的配置。
Linux distribution Recommended storage drivers
Docker CE on Ubuntu aufs, devicemapper, overlay2 (Ubuntu 14.04.4 or later, 16.04 or later), overlay, zfs, vfs
Docker CE on Debian aufs, devicemapper, overlay2 (Debian Stretch), overlay, vfs
Docker CE on CentOS devicemapper, vfs
Docker CE on Fedora devicemapper, overlay2 (Fedora 26 or later, experimental), overlay (experimental), vfs
如果可能,overlay2 应该作为首选。当第一次安装Docker的时候,overlay2被默认使用。之前,是aufs被 默认使用,现在已经没有这样的用例了。如果你想在新安装用aufs,一定要先配置好,并且安装额外的包,比如:linux-image-extra。参考 aufs

你可能感兴趣的:(Docker存储驱动的选择)