docker数据卷

docker数据卷

  • 数据卷是目录或文件,不是块设备。
  • 容器可以读写volume中的数据。
  • volume数据可以持久化保存。
  • docker提供了两种卷:bind mount、 docker managed volume
  • bind mount
  • 是将主机上的目录或文件mount到容器里。
  • 使用直观高效,易于理解。
  • 使用 -v 选项指定路径,格式 :
  • bind mount 默认权限是读写rw,可以在挂载时指定只读ro。
  • -v选项指定的路径,如果不存在,挂载时会自动创建。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • docker managed volume
  • bind mount必须指定host文件系统路径,限制了移植性。
  • docker managed volume 不需要指定mount源。
  • 执行docker inspect vm1 可以看到:
  • source就是volume在host中的目录,是docker自动为容器生成的目录,如果挂载时指向的已有目录,原有数据会被复制到volume中。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 因为docker自动为容器生成的volumes目录是一大串数字,特别麻烦,所以我们也可以自己创建volumes文件目录名
  • 将上边运行的状态和数据卷都删除
    在这里插入图片描述
  • 运行容器时,直接指定数据卷的目录名称
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 再次将环境还原
    在这里插入图片描述
  • 可以先创建数据卷,然后运行时将数据直接存在该目录下
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 也可以在指定数据卷时,指定挂载权限,默认是rw权限
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • bind mount与docker managed volume对比
  • 相同点:两者都是 host 文件系统中的某个路径。
  • 不同点:
    在这里插入图片描述

卷插件

  • Docker Plugin :Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。

  • Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省 路径下查找Unix Socket文件,自动发现可用的插件。

  • 当客户端与Daemon交互,使用插件创建数据卷时,Daemon会在后
    端找到插件对应的 socket 文件,建立连接并发起相应的API请求,最
    终结合Daemon自身的处理完成客户端的请求。

  • 使用卷插件

  • convoy卷插件实现: 支持三种运行方式:devicemapper、NFS、EBS。
    以下实验使用nfs方式

  • 实验前先将之前实验的运行的docker状态删除,将生成的数据卷也删除

  • 在所有节点提前挂载NFS存储

  • 在server1和server2上下载nfs
    在这里插入图片描述

  • 创建挂载目录:/mnt/nfs
    在这里插入图片描述

  • server1编辑配置文件,编辑挂在信息
    在这里插入图片描述

  • 查看/mnt/nfs的权限
    在这里插入图片描述

  • 开启nfs和rpcbind
    在这里插入图片描述

  • 查看挂载信息
    在这里插入图片描述

  • server2上下载nfs并开启rpcbind

  • 查看挂载信息
    在这里插入图片描述

  • 挂载
    在这里插入图片描述

  • 同样将server2的Docker环境还原
    在这里插入图片描述
    在这里插入图片描述

  • 在server2上的/mnt/nfs下创建文件
    在这里插入图片描述

  • 此时在server1的/mnt/nfs/目录下可以看到,实现了同步
    在这里插入图片描述
    在这里插入图片描述

  • server1和2上都要安装convoy卷插件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 创建卷: convoy create vol1
    在这里插入图片描述
    自动生成数据目录:/mnt/nfs/vol1/
    在这里插入图片描述
    在这里插入图片描述

  • 使用卷: docker run -it --name vm1 -v vol1:/data --volume-driver=convoy ubuntu
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    可以在两个主机上同时运行容器,会发现数据目录中的数据是同步的
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值