docker数据卷性质

数据卷的特性
  • Docker 镜像由多个只读层叠加而成,启动容器时,Docker 会加载只读镜像层并在镜像栈顶部添加一个读写层
  • 如果运行中的容器修改了现有的一个已经存在的文件,那么该文件将会从读写层下面的的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,次即“写时复制”机制,读写层的修改不影响只读层文件的性质。
数据卷的意义

关闭并重启容器,其数据不受影响;但删除Docker 容器,则其改变将会全部丢失

存在的问题
  • 存在于联合文件系统中,不易于宿主机访问
  • 容器间数据共享不便
  • 删除容器其数据会丢失
解决方案

“卷”是容器上的一个或多个“目录”,此类目录可绕过联合文件系统,与宿主机上的某目录“绑定“,当我访问卷上的目录就可以连接到宿主机目录。当我们有一天删除可写层的时候,我们的数据因为保存在卷中,所以并没有被删除,就有利于数据的永久保存。

如图所示:数据卷和读写层分开存放,也就是读写层在删除的时候,数据卷的数据依然存在。
在这里插入图片描述

尝试使用数据卷存储数据(绑定挂载)

首先我们进入位于/usr/local/volumes 的volumes目录下,新建一个/data/目录用于存放我们的一会要绑定的容器的数据。

首先我们通过运行一下代码实现绑定,前面是HOSTDIR,后面是VolumeDIR

docker run --name tomcat01 -v /data:/data -d tomcat

挂载成功后,我们在该宿主机的data目录下touch一个文件,名为dmoann,我们进入容器交互之后,发现在/data下也有一个相同的dmoann,也就是说,在两端操作都会使另外一边产生相对应的改变,这就是数据卷绑定挂载的功能体现。

在这里插入图片描述

docker存储驱动

Docker 存储驱动( storage driver ) 是Docker 的核心组件,它是Docker 实现分成镜像的基础

  1. device mapper ( DM ):性能和稳定性存在问题,不推荐生产环境使用,这是一种比较老的存储驱动,如果内核版本低于3.18,overlaysfs未进入主线,因此,docker会使用DM的存储驱动。
  2. btrfs:社区实现了btrfsdriver,稳定性和性能存在问题
  3. overlayfs:内核3.18 overlayfs 进入主线,性能和稳定性优异,第一选择
overlayfs

主要分为三个层级,左边对应的是docker结构的,最下面是镜像层,中间是容器层,最上面是用户所能看到的层,对应右边ovwelayfs的三个层级。用户看到的是自上而下看的第一个file所组成的集合,例如下图中的file2,upperdir的file2覆盖了lowerdir的file2 ,也就是之前我们说的写时复制。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值