翻译自官网: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 只支持Ubuntu和Debian,而或许需要安装额外的包。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 |
网友评论