应用容器引擎之 docker 学习 (十四) Docker数据卷管理+卷插件管理

什么是Docker数据卷

在这里插入图片描述

数据卷是一个或多个容器中专门指定的目录,它能够绕过联合文件系统。
卷被设计用作数据持久化、并且是独立于容器的生命周期的。

因此,Docker不会在删除容器时自动删除数据卷卷,也不会主动“垃圾回收”掉容器不再使用的卷。

数据卷的存在就是想让的容器的数据持久化存在,而且可以实现容器之间的数据共享。

通俗地来说,docker容器数据卷可以看成使我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删除时删除其挂载的数据卷。

数据卷的类型:

①宿主机数据卷:直接在宿主机的文件系统中但是容器可以访问(bind mount)
②命名的数据卷:磁盘上Docker管理的数据卷,但是这个卷有个名字。
③匿名数据卷:磁盘上Docker管理的数据卷,因为没有名字想要找到不容易,Docker来管理这些文件

数据卷其实都在(如果没有网络文件系统等情况下)宿主机文件系统里面的,只是第一种是在宿主机内的特定目录下,而后两种则在docker管理的目录下,这个目录一般是 /var/lib/docker/volumes/

数据卷的特点

(1)数据卷可以在容器之间共享或重用数据
(2)数据卷中的更改可以直接生效
(3)数据卷中的更改不会包含在镜像的更新中
(4)数据卷的生命周期一直持续到没有容器使用它为止

为什么要用数据卷

在这里插入图片描述在这里插入图片描述

Docker数据卷管理

bind-mount形式

1.在这里插入图片描述
在这里插入图片描述在这里插入图片描述
2.
在这里插入图片描述3.在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述2.
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述指定了ro时,发现不能写文件
在这里插入图片描述在这里插入图片描述

docker管理卷

在这里插入图片描述
在这里插入图片描述

1.在这里插入图片描述
在这里插入图片描述在这里插入图片描述
2.在这里插入图片描述

在这里插入图片描述
3.在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.在这里插入图片描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

bind-mount和managed volume的对比

在这里插入图片描述

bind mount必须指定host文件系统路径,限制了移植性。
docker managed volume 不需要指定mount源。

卷插件管理

基本概念

在这里插入图片描述如果想实现跨主机的容器之间的数据共享就要使用卷插件
使用了卷插件才可以使用网络文件系统实现数据共享

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
docker 卷默认使用的是local类型的驱动,只能存在宿主机
跨主机的volume就需要使用第三方的驱动,可以查看链接发现卷驱动。

docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。

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

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

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

convoy卷插件

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
convoy卷插件支持三种运行方式:devicemapper、NFS、EBS。下面的实验以nfs的运行方式来演示

实验目的:在ser2和ser 1 底层用nfs来实现数据共享,
但是docker并不会直接访问 nfs可以使用卷插件convoy来
指引docker引擎访问底层实现的nfs, nfs上有数据卷

1.(1)首先在ser2和ser1上搭建nfs文件系统(ser2主节点)

ser2

root@ser2 ~]# yum install -y nfs-utils	安装
[root@ser2 ~]# systemctl start rpcbind	
[root@ser2 ~]# mkdir /nfs	创建共享目录
[root@ser2 ~]# chmod 777 /nfs	修改共享目录权限
[root@ser2 ~]# vim /etc/exports	编辑共享目录文件,否则将不会被共享出去
[root@ser2 ~]# cat /etc/exports
/nfs	*(rw,no_root_squash)
[root@ser2 ~]# systemctl start nfs

ser1:

[root@ser1 ~]# yum install -y nfs-utils
[root@ser1 ~]# systemctl start nfs-server.service
[root@ser1 ~]# showmount -e ser2
Export list for 172.25.2.3:
/nfs *
[root@ser1 ~]# mkdir /nfs
[root@ser1 ~]# 
[root@ser1 ~]# mount 172.25.2.3:/nfs/ /nfs/

在这里插入图片描述在这里插入图片描述在这里插入图片描述rpcbind服务必须是开启的。
这是因为:他是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。
简单理解rpc就是一个中介服务。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在从节点上查看到,并且挂载
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在ser1中测试时。发现并不能删除
在这里插入图片描述在这里插入图片描述
重新在ser1中编辑文件 /etc/exports文件
在这里插入图片描述
在这里插入图片描述在这里插入图片描述ser1中测试时可以了
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
最后再实现资源共享

配置convoy环境

docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。

1.在ser2和ser1中,安装convoy插件
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在ser1中
在这里插入图片描述
在ser2中,创建convoy的数据目录
在这里插入图片描述在这里插入图片描述在ser1中也做同样的操作
在这里插入图片描述在ser2中启动convoy服务

第一次运行上面的convoy daemon命令的时候,会在/mnt/nfs目录下生成一个config文件夹,这个文件夹不要删除,不然客户端的convoy命令就会用不了
在这里插入图片描述在这里插入图片描述在这里插入图片描述将convoy守护进程开启生成的.sock文件放入/etc/docker/plugins目录下的convoy.spec文件中,docker就可以识别。(其中convoy.spec文件之前是不存在的)
在这里插入图片描述在这里插入图片描述

在ser1中也启动服务

在这里插入图片描述在这里插入图片描述
创建卷

1.在ser2中创建卷vol1
在这里插入图片描述2.
在这里插入图片描述在这里插入图片描述3.在ser2中运行容器时指定卷为刚才新创建的vol1
在这里插入图片描述在这里插入图片描述在这里插入图片描述4.在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在ser1中发现新创建的index.html文件
在这里插入图片描述在这里插入图片描述
5.
在这里插入图片描述6.在ser1中也可以运行容器,也可以用到共享的数据卷

在这里插入图片描述在这里插入图片描述
7.在ser1中创建数据卷vol2
在这里插入图片描述在这里插入图片描述在这里插入图片描述8.在这里插入图片描述在这里插入图片描述在这里插入图片描述9.如何删除通过nfs创建的数据卷,让之后创建的数据卷都是本地的 呢
在这里插入图片描述在这里插入图片描述10.在这里插入图片描述在这里插入图片描述10.创建本地数据卷,并且在创建时指定数据卷的名称
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述11.在这里插入图片描述在这里插入图片描述
12.
在这里插入图片描述在这里插入图片描述13.删除多余的卷
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值