docker从零开始 存储(六)存储驱动如何选择
Docker存储驱动程序
理想情况下,将非常少的数据写入容器的可写层,并使用Docker卷来写入数据。但是,某些工作负载要求您能够写入容器的可写层。这是存储驱动程序的用武之地。
Docker使用可插拔架构支持多种不同的存储驱动程序。存储驱动程序控制在Docker主机上存储和管理映像和容器的方式。
阅读完存储驱动程序概述后,下一步是为工作负载选择最佳存储驱动程序。在做出此决定时,需要考虑三个高级别因素:
如果内核支持多个存储驱动程序,则假设满足该存储驱动程序的先决条件,Docker会在没有显式配置存储驱动程序的情况下列出要使用哪个存储驱动程序的优先级列表:
如果可能,使用配置量最少的存储驱动程序,例如
btrfs
或zfs
。其中每个都依赖于正确配置的后备文件系统。否则,尝试在最常见的情况下使用具有最佳整体性能和稳定性的存储驱动程序。
overlay2
是首选,其次是overlay
。这些都不需要额外的配置。overlay2
是Docker CE的默认选择。devicemapper
是下一个,但需要direct-lvm
生产环境,因为loopback-lvm
,虽然零配置,性能非常差。
选择顺序在Docker的源代码中定义。您可以通过查看Docker CE 18.03的源代码来查看订单。 如果您运行不同版本的Docker,可以使用文件查看器顶部的分支选择器来选择不同的分支。
您的选择可能受Docker版本,操作系统和分发版的限制。例如,
aufs
仅在Ubuntu和Debian上支持,并且可能需要安装额外的软件包,而btrfs
仅在SLES上支持,而SLES仅支持Docker EE。见 每个Linux发行版支持存储驱动程序。某些存储驱动程序要求您使用特定格式作为后备文件系统。如果您有使用特定支持文件系统的外部要求,这可能会限制您的选择。见 支持后盾的文件系统。
在缩小了可供选择的存储驱动程序之后,您的选择取决于工作负载的特性以及所需的稳定性级别。有关 帮助做出最终决定,请参阅其他注意事项
每个Linux发行版支持的存储驱动
在较高级别,您可以使用的存储驱动程序部分取决于您使用的Docker版本。
此外,Docker不建议任何需要您禁用操作系统安全功能的配置,例如在CentOS上selinux
使用overlay
或overlay2
驱动程序时需要禁用 。
Docker EE和CS-Engine
对于Docker EE和CS-Engine,支持存储驱动程序的权威资源是 产品兼容性矩阵。要从Docker获得商业支持,您必须使用支持的配置。
Docker CE
对于Docker CE,只测试了一些配置,并且您的操作系统内核可能不支持每个存储驱动程序。通常,以下配置适用于最新版本的Linux发行版:
Linux发行版 | 推荐的存储驱动 |
---|---|
Ubuntu上的Docker CE | aufs ,devicemapper ,overlay2 (Ubuntu的14.04.4或更高版本,16.04或更高版本), ,,overlay zfs vfs |
Debian上的Docker CE | aufs ,devicemapper ,overlay2 (Debian的扩展), overlay ,vfs |
CentOS上的Docker CE | devicemapper , vfs |
Fedora上的Docker CE | devicemapper ,overlay2 (Fedora 26或更高版本,实验性),overlay (实验性的),vfs |
如果可能,overlay2
是推荐的存储驱动程序。第一次安装Docker时,overlay2
默认使用。以前,aufs
在可用时是默认使用,但现在不再是这种情况。如果要aufs
在未来的新安装中使用,则需要显式配置它,并且可能需要安装额外的软件包,例如linux-image-extra
。见aufs。
在使用的现有安装中aufs
,仍然使用它。
如果有疑问,最好的全能配置是使用具有支持overlay2
存储驱动程序的内核的现代Linux发行版,并将Docker卷用于写入繁重的工作负载,而不是依赖于将数据写入容器的可写层。
该vfs
存储驱动程序通常不是最好的选择。在使用vfs
存储驱动程序之前,请务必阅读 其性能和存储特性和限制。
对非推荐存储驱动程序的期望:Docker CE不提供商业支持,您可以在技术上使用适用于您的平台的任何存储驱动程序。例如,您可以使用
btrfs
Docker CE,即使不建议在任何Docker CE平台上使用,您需要自担风险。上表中的建议基于自动回归测试以及已知适用于大量用户的配置。如果您使用推荐的配置并找到可重现的问题,则可能会很快修复。如果根据此表不推荐您要使用的驱动程序,则可以自行承担风险。您可以而且应该仍然报告您遇到的任何问题。但是,此类问题的优先级低于使用推荐配置时遇到的问题。
适用于Mac的Docker和适用于Windows的Docker
适用于Mac的Docker和适用于Windows的Docker适用于开发,而非生产。无法在这些平台上修改存储驱动程序。
支持的后备文件系统
关于Docker,后备文件系统是所在的文件系统 /var/lib/docker/
。某些存储驱动程序仅适用于特定的后备文件系统。
存储驱动程序 | 支持的后备文件系统 |
---|---|
overlay , overlay2 |
ext4 , xfs |
aufs |
ext4 , xfs |
devicemapper |
direct-lvm |
btrfs |
btrfs |
zfs |
zfs |
其他考虑
适合您的工作量
除此之外,每个存储驱动程序都有自己的性能特征,使其或多或少适合不同的工作负载。考虑以下概括:
aufs
,overlay
和overlay2
所有操作都在文件级而不是块级操作。这样可以更有效地使用内存,但容器的可写层在写入繁重的工作负载中可能会变得非常大。- 块级存储驱动器,例如
devicemapper
,btrfs
和zfs
执行的写繁重的工作更好(虽然不是还有泊坞窗卷)。 - 对于许多小型写入或具有多个层或深层文件系统的容器,
overlay
可能表现更好overlay2
。 btrfs
并zfs
需要大量的内存。zfs
是PaaS等高密度工作负载的理想选择。
有关性能,适用性和最佳实践的更多信息,请参阅每个存储驱动程序的文档。
共享存储系统和存储驱动程序
如果您的企业使用SAN,NAS,硬件RAID或其他共享存储系统,则它们可以提供高可用性,增强的性能,精简配置,重复数据删除和压缩。在许多情况下,Docker可以在这些存储系统之上工作,但Docker并没有与它们紧密集成。
每个Docker存储驱动程序都基于Linux文件系统或卷管理器。请务必遵循在共享存储系统之上运行存储驱动程序(文件系统或卷管理器)的现有最佳实践。例如,如果在共享存储系统之上使用ZFS存储驱动程序,请确保遵循在该特定共享存储系统之上操作ZFS文件系统的最佳实践。
稳定性
对于某些用户而言,稳定性比性能更重要。虽然Docker认为这里提到的所有存储驱动程序都是稳定的,但有些更新,并且仍在积极开发中。一般而言,aufs
是overlay
,并且 devicemapper
是具有最高稳定性的选择。
经验和专业知识
选择您的组织可以轻松维护的存储驱动程序。例如,如果您使用RHEL或其下游分支之一,您可能已经具有LVM和Device Mapper的经验。如果是这样,devicemapper
司机可能是最好的选择。
使用您自己的工作负载进行测试
您可以在不同的存储驱动程序上运行自己的工作负载时测试Docker的性能。确保使用等效的硬件和工作负载来匹配生产条件,以便您可以看到哪个存储驱动程序提供了最佳的整体性能。
检查当前的存储驱动程序
每个存储驱动程序的详细文档详细说明了使用给定存储驱动程序的所有设置步骤。
要查看Docker当前使用的存储驱动程序,请使用docker info
并查找该Storage Driver
行:

要更改存储驱动程序,请参阅新存储驱动程序的特定说明。某些驱动程序需要其他配置,包括配置Docker主机上的物理或逻辑磁盘。
重要说明:更改存储驱动程序时,任何现有镜像和容器都将无法访问。这是因为新存储驱动程序无法使用它们的图层。如果还原更改,则可以再次访问旧图像和容器,但是您使用新驱动程序提取或创建的任何内容都将无法访问。
docker从零开始 存储(六)存储驱动如何选择的更多相关文章
- docker从零开始 存储(五)存储驱动介绍
关于存储驱动程序 要有效地使用存储驱动程序,了解Docker如何构建和存储镜像以及容器如何使用这些镜像非常重要.您可以使用此信息做出明智的选择,以确定从应用程序中保留数据的最佳方法,并避免在此过程中出 ...
- docker从零开始 存储(一)存储概述
管理Docker中的数据 默认情况下,在容器内创建的所有文件都存储在可写容器层中.这意味着: 当该容器不再运行时,数据不会持久存在,如果另一个进程需要,则可能很难从容器中获取数据. 容器的可写层紧密耦 ...
- docker从零开始 存储(四)tmpfs挂载
使用tmpfs挂载 volume和bind mounts允许您在主机和容器之间共享文件,以便即使在容器停止后也可以保留数据. 如果你在Linux上运行Docker,你有第三个选择:tmpfs moun ...
- Docker镜像的目录存储讲解
我们成功安装完docker后,执行命令行sudo docker run hello-world, 如果是第一次执行,则会从远程拉取hello-world的镜像到本地,然后运行,显示hello worl ...
- centos7下安装docker(13.1docker存储--data volume)
我们现在知道docker 有两种存储方式:storage driver和data volume stroage driver这种存储方式主要是存储那些无状态的数据,是镜像层和容器层组成的,而data ...
- docker容器的持久化存储:Volume
独立于docker容器的持久化存储: 法(1):自动将服务器文件夹挂载到容器内部文件夹/usr/share/nginx/html,这样只修改服务器文件夹下的内容即可对应修改容器内部文件夹的内容 将服务 ...
- Docker 入门 第六部分:部署app
目录 Docker 入门 第六部分:部署app 先决条件 介绍 选择一个选项 Docker CE(Cloud provider) Enterprise(Cloud provider)这里不做介绍 En ...
- Docker学习(六)——Dockerfile文件详解
Docker学习(六)--Dockerfile文件详解 一.环境介绍 1.Dockerfile中所用的所有文件一定要和Dockerfile文件在同一级父目录下,可以为Dockerfile父目录的子目录 ...
- STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
随机推荐
- Linux e1000e网卡驱动
目录 识别网卡 命令行参数 附加配置 技术支持 一.识别网卡e1000e驱动支持Intel所有的GbE PCIe网卡,除了82575,82576,基于82580系列的网卡.提示:Intel(R) PR ...
- 编程练习:寻找发帖"水王"扩展问题一
回顾 寻找发帖水王的问题总结起来就是在一个数组中某一个元素出现次数超过了数组长度的一半,那么可以很顺利的找到这个元素,实现见"编程练习:寻找发帖水王" 扩展 上面的问题中,强调了某 ...
- 健康领域今年开始井喷了,养老地产和私人医生这两个领域目测成为下一轮BAT在健康领域布局的竞争方向
医疗行业做了六年多的时间,今年到了井喷的阶段,腾讯先是入股了丁香园,然后又一亿美金融资挂号网,春雨医生获得5000万美元的C轮融资,这是要上市的节奏.. 从互联网战略上,健康网和医疗网都是做资料刚开始 ...
- ActiveMQ+Zookeeper集群配置文档
Zookeeper + ActiveMQ 集群整合配置文档 一:使用ZooKeeper实现的MasterSlave实现方式 是对ActiveMQ进行高可用的一种有效的解决方案, 高可用的原理:使用Zo ...
- 【bzoj1263】[SCOI2006]整数划分 高精度
题目描述 从文件中读入一个正整数n(10≤n≤31000).要求将n写成若干个正整数之和,并且使这些正整数的乘积最大. 例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=10 ...
- Luogu2737 USACO4.1麦香牛块(动态规划)
小凯的疑惑升级版.只有两个数的话不能表示的最大数是ab-a-b,显然如果可选数增加不会比这更大,所以只要答案存在一定小于256*256-2*256.在这个范围内背包即可. #include<io ...
- Codeforces Round #401 (Div. 1) C(set+树状数组)
题意: 给出一个序列,给出一个k,要求给出一个划分方案,使得连续区间内不同的数不超过k个,问划分的最少区间个数,输出时将k=1~n的答案都输出 比赛的时候想的有点偏,然后写了个nlog^2n的做法,T ...
- bzoj 1977 洛谷P4180 严格次小生成树
Description: 给定一张N个节点M条边的无向图,求该图的严格次小生成树.设最小生成树边权之和为sum,那么严格次小生成树就是边权之和大于sum的最小的一个 Input: 第一行包含两个整数N ...
- C#语法糖大汇总【转发】
首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕不已,呵呵. 1. ...
- [链接] Linux下常见的~/.bashrc、/etc/profile、/etc/ld.so.config小科普以及caffe编译遇到的相关问题解决
由于博主设置禁止转载,这里贴一个链接,http://blog.csdn.net/u014266895/article/details/61928602,内容很有用,linux下很多软件问题都是各种路径 ...