docker篇——存储驱动

docker存储驱动

关于存储驱动

每个docker容器都有一个本地存储空间,用于保护层叠的镜像层(Image Layer)以及挂载的容器文件系统。

默认情况下,容器的所有读写操作都发生在其镜像层上或挂载的文件系统上,所以存储是容器的性能和稳定性不可获取的一个环节。

对比以往的本地存储,本地存储是通过存储驱动(Storage Driver)进行管理的,有时候也称之为Graph Driver或者GraphDriver。
虽然存储驱动在上层抽象设计中都采用栈式镜像层存储写时复制的设计思想,但是docker在linux底层支持几种不同的存储驱动的具体实现,每一种实现方式都采用了不同的方法实现了镜像层和写时复制。

总结,如下表所示:

传统存储驱动Docker存储驱动
设计思想栈式镜像存储栈式镜像存储
写时复制写时复制
区别(linux)单一实现基于linux底层支持,采用了不同的方法实现上述两种思想
区别(windows)单一实现windows Filter
注意:存储驱动选择是节点级别的。这意味着每个docker主机只能选择一种存储驱动,而不能为每个容器选择不同的存储驱动。

修改位置:/etc/docker/daemon.json文件修改存储驱动配置,修改之后需要重启docker才能够生效。
每种存储驱动,镜像的存储位置是不同的,修改存储驱动类型之后,原存储驱动的镜像不可用。切回去之后又可以使用。
如果希望继续使用镜像,则需要将原镜像保存为docker形式,上传到某个镜像仓库,修改存储驱动重启后,将镜像拉倒本地,重启容器既可使用。

查询命令:docker system info
建议:
下面的清单可以作为一个参考指南,帮助我们选择合适的存储驱动。同时还可以参阅 Docker 官网上由 Linux 发行商提供的最新文档来做出选择。

  1. Red Hat Enterprise Linux:4.x版本内核或更高版本 + Docker 17.06 版本或更高版本,建议使用 Overlay2。
  2. Red Hat Enterprise Linux:低版本内核或低版本的 Docker,建议使用 Device Mapper。
  3. Ubuntu Linux:4.x 版本内核或更高版本,建议使用 Overlay2。
  4. Ubuntu Linux:更早的版本建议使用 AUFS。
  5. SUSE Linux Enterprise Server:Btrfs。

Device Mapper配置

大部分Linux存储驱动不需要或者需要很少的配置。但是device mapper配置需要合理配置之后才会表现出更好的性能。

默认情况下,Device Mapper采用的是loopback mounted sparse file作为底层实现来为Docker提供支持。

开箱即用对性能没有要求,可以使用,但是对于生产环境,往往是满足不了性能的要求,实际上是性能比较差,不支持生产环境。

达到最佳性能,需要将底层实现修改为direct-lvm模式。

direct-lvm模式通过使用基于裸块设备(Raw Block Device)的LVM精简池(LVM thin pool)来获取更好的性能。

在Docker17.06以及更高的版本中可以配置direct-lvm作为存储驱动。但是这种方式只能配置一个块设备,并且在第一次安装后才能设置生效。目前这种方式性能和可靠性有一定风险。

个人学习使用
文章总结出处

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值