2019独角兽企业重金招聘Python工程师标准>>>

简介

  本文会介绍Docker存储驱动的特性,别列出现在已经支持的存储驱动,最后,会介绍如果选型适合你的存储驱动。

可插拔的存储驱动架构

  Docker的存储驱动架构是可插拔的,可以让你很方便的将适合你环境和用例的存储驱动“插进”Docker。每个Docker存储驱动都建立在一种Linux文件系统或者卷管理系统之上,也可以很自由地按照其自己的方法去实现镜像层和容器层的管理。也就是说一些存储驱动在不同的场景下会比其他的驱动性能更好。
  一旦你决定了哪种驱动最合适,你就可以Docker daemon启动之前设置驱动到Docker中,这样你就可以在该存储驱动上运行Docker daemon了,所有新容器都会使用这个驱动来创建了。下图显示了支持的驱动技术和它们对应的Docker存储驱动名称。
  

Technology Storage driver name
OverlayFS overlay / overlay2
AUFS aufs
Btrfs btrfs
Device Mapper devicemapper
VFS vfs
ZFS zfs

  可以通过docker info命令来查看当前daemon使用着哪种存储驱动。

$ docker infoContainers: 0Running: 0Paused: 0Stopped: 0
Images: 1
Server Version: 1.12.6
Storage Driver: overlay2Backing Filesystem: extfs
... output truncated ...

  上面的输出表示,Docker daemon使用overlay2作为存储驱动,而其Backing Filesystem是extfs。也就是说,在我的环境中,overlay2存储驱动是在ext文件系统上操作的。后端文件系统指的是创建了Docker host的本地存储区域/var/lib/docker的文件系统。
  存储驱动,可以运行在某种后端文件系统上,但也有些不支持的后端文件系统,它们之间的对应关系如下表:

Storage driver 后端文件系统 不支持的后端文件系统
overlay ext4 xfs btrfs aufs overlay zfs eCryptfs
overlay2 ext4 xfs btrfs aufs overlay zfs eCryptfs
aufs ext4 xfs btrfs aufs eCryptfs
btrfs btrfs only N/A
devicemapper direct-lvm N/A
vfs debugging only N/A
zfs zfs only N/A

  想要设置存储驱动,可以在dockerd启动的时候加入--storage-driver=<name>的参数,也可以设置DOCKER_OPTS选项到/etc/default/docker文件中。下面的命令显示了如何在dockerd命令中使用devicemapper存储驱动。

$ dockerd --storage-driver=devicemapper &$ docker infoContainers: 0
Images: 0
Storage Driver: devicemapperPool Name: docker-252:0-147544-poolPool Blocksize: 65.54 kBBacking Filesystem: extfsData file: /dev/loop0Metadata file: /dev/loop1Data Space Used: 1.821 GBData Space Total: 107.4 GBData Space Available: 3.174 GBMetadata Space Used: 1.479 MBMetadata Space Total: 2.147 GBMetadata Space Available: 2.146 GBThin Pool Minimum Free Space: 10.74 GBUdev Sync Supported: trueDeferred Removal Enabled: falseData loop file: /var/lib/docker/devicemapper/devicemapper/dataMetadata loop file: /var/lib/docker/devicemapper/devicemapper/metadataLibrary Version: 1.02.90 (2014-09-01)
Execution Driver: native-0.2
<output truncated>

  存储驱动的选择会影响你容器应用的性能,所以很有必要理解存储驱动之间的区别和优缺点,然后才能选择合适的驱动。

共享存储系统和存储驱动

  很多企业都从共享文件系统(如SAN和NAS)中获取存储资源。通常情况下,这都能带来更好的性能和更高可用性,还有如超配、副本删除、压缩等高级特性。
  Docker存储驱动和数据卷都可以运行在这些共享存储系统提供的存储上,这使得Docker可以利用这些系统提供的优越性能和可用性。

使用哪种存储驱动呢?

  很多方面都会影响存储驱动的选择,不过有两点必须记住:
    ▶没有哪种驱动适合所有的用户场景;
    ▶存储驱动一直都在提升和改进;
  此外,下面的内容,也可以提供一些指导意见。

稳定性

  为了Docker环境更加稳定,你应该考虑一下一些建议:
    ▶使用你OS发行版默认的存储驱动。安装Docker时,它会根据你的系统选择默认的存储驱动,稳定性是它选择的一个主要方面。
    ▶遵守CS Engine compatibility matrix指定的配置。CS Engine是Docker Engine的商业化版本,它代码基于开源的Engine。不过它有一套限制的支持配置,而这个支持的配置使用最稳定成熟的存储驱动。

经验和专业技能

  选择你和你的团队都有经验的一种存储。比如,你使用RHEL系列的OS,你可能对LVM和Device Mapper很有经验,因此,你应该使用devicemapper存储驱动。
  如果你对Docker提供的存储驱动都没有经验,并且你希望使用简单可用的稳定的Docker环境,那么你可以考虑使用你发行版默认的Docker存储驱动。

未来

  很多人认为OverlayFS是Docker存储驱动的未来。然而,它还不够成熟,并且和aufs、devicemapper相比暂时还不够稳定。因此,使用OverlayFS时应该注意。
  下图列出了所有驱动,并列出了它们的优缺点。如果要选择存储驱动,那么可以参考下面提到的内容。

Overlay vs Overlay2

  OverlayFS有两种存储驱动,它们使用了相同的OverlayFS技术,但却有着不同的实现,在磁盘使用上也并不互相兼容。因为不兼容,两者之间的切换必须重新创建所有的镜像。overlay驱动是最原始的OverlayFS实现,并且,在Docker1.11之前是仅有的OverlayFS驱动选择。overlay驱动在inode消耗方面有着较明显的限制,并且会损耗一定的性能。overlay2驱动解决了这种限制,不过只能在Linux kernel 4.0以上使用它。

转载于:https://my.oschina.net/styshoo/blog/858887

Docker存储驱动之总览相关推荐

  1. Docker存储驱动之OverlayFS简介

    简介 OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性: 1) 更简单地设计: 2) 从3.18开始,就进入了Linux内核主线: 3) 可能更快一些. ...

  2. DOCKER存储驱动之DEVICE MAPPER简介

    Device Mapper是一个基于kernel的框架,它增强了很多Linux上的高级卷管理技术.Docker的devicemapper驱动在镜像和容器管理上,利用了该框架的超配和快照功能.为了区别, ...

  3. Docker——docker存储驱动原理

    摘要 Docker 主要是基于 Namespace.cgroups 和联合文件系统这三大核心技术实现的.联合文件系统(Union File System,Unionfs)是一种分层的轻量级文件系统,它 ...

  4. Docker存储驱动devicemapper介绍和配置

    一.devicemapper介绍 1 2 3 4 5 6 7 8 9 Device Mapper是Linux系统中基于内核的高级卷管理技术框架.Docker的devicemapper存储驱动就是基于该 ...

  5. docker存储驱动模式之direct-lvm配置

    最近在虚拟机上玩docker,但是发现默认安装使用的是loop-lvm的模式做后端存储,这个肯对对后面的实验会造成影响,而且docker官方也不建议在生产环境下使用loop-lvm,下图为docker ...

  6. Docker存储驱动

    Docker Storage Driver 每个 Docker 容器都有一个本地存储空间,用于保存层叠的镜像层(Image Layer)以及挂载的容器文件系统. 默认情况下,容器的所有读写操作都发生在 ...

  7. docker 存储驱动之overlay

    overlay OverlayFS是一个类似于AUFS 的现代联合文件系统,但更快,实现更简单.Docker为OverlayFS提供了一个存储驱动程序. * 注:OverlayFS是内核提供的文件系统 ...

  8. docker 存储驱动之overlay2

    overlay2 overlay2原生支持128层,这提供docker build和docker commit更好的性能支持 在执行完docker pull ubuntu后,可以看到 $ ls -l ...

  9. Docker 存储选型,这些年我们遇到的坑

    戳蓝字"CSDN云计算"关注我们哦! 技术头条:干货.简洁.多维全面.更多云计算精华知识尽在眼前,get要点.solve难题,统统不在话下! 随着Docker 容器技术的不断发展和 ...

  10. 关于docker的存储驱动

    2019独角兽企业重金招聘Python工程师标准>>> #背景 一直以来我的业务都是跑在aufs+ext4的存储驱动结构上,看上去没有什么问题,直到业务报告: 在高并发场景下,auf ...

最新文章

  1. Gridview改变单元格颜色
  2. Linux 配置nfs
  3. php函数介绍,PHP函数介绍_PHP教程
  4. PHP常用字符串函数小结
  5. 【Java】保留X位有效数字
  6. python画图库matplotlib:初识
  7. Ext中 get、getDom、getCmp的区别
  8. VoLTE技术中的会话持续性-ICS
  9. YYText的介绍和使用
  10. php把amr转换成mp3,php 微信amr转mp3的方法
  11. Springboot实现微信公众号模板消息发送
  12. 苹果手机服务器暂时不可用,服务暂时不可用【操作途径】
  13. JK触发器波形图分析
  14. 单片机c51语言中 两个位变量类型是什么,51单片机中的数据类型解析
  15. eclipse:Project is already imported into workspace
  16. 在html中加动画效果,教你如何在网页上用H5实现动画效果
  17. 数据结构入门----赫夫曼Huffman树及其应用
  18. neko 命令行操作
  19. ORA-12705:无法访问NLS数据文件或者指定的环境无效
  20. 运营商大数据怎样精准营销推广获客?

热门文章

  1. 批量调取接口_批量操作_API 文档_对象存储 - 七牛开发者中心
  2. 自定义Kettle数据库插件 1
  3. sony笔记本触摸板角落轻敲功能
  4. [译] 在 Twitch 代码直播一年的总结
  5. servlet详细理解
  6. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录
  7. 初识验收测试管理工具FitNesse
  8. git删除文件需要注意的事项
  9. [20150803]触发器对dml的影响.txt
  10. 思科路由器Ez***测试