Linux企业运维——Docker(六)数据卷

Linux企业运维——Docker(六)数据卷

一、数据卷管理

为什么要用数据卷

  • docker分层文件系统
    性能差
    生命周期与容器相同
  • docker数据卷
    mount到主机中,绕开文件分层系统
    和主机磁盘性能相同,容器删除后依然保留
    仅限本地磁盘,不能随容器迁移

docker提供了两种卷:

  1. bind mount
  2. docker managed volume

1.1、bind mount方式

  • 是将主机上的目录或文件mount到容器里
  • 使用直观高效,易于理解
  • 使用 -v 选项指定路径,格式<host path>:<container path>

方法一:

先关闭运行的harbor
在这里插入图片描述
使用nginx镜像创建容器demo,将真实主机/dockerdata目录挂载到容器中/usr/share/nginx/html
在这里插入图片描述
将www.westos.org输出到index.html页面中
在这里插入图片描述
查看ip并且访问测试,可以看到正常显示
在这里插入图片描述
进入demo容器查看文件是否挂载并写入数据
在这里插入图片描述
方法二:

删除上面的测试用例demo,先创建数据卷,再挂载。
将创建的webdata数据卷挂载到容器中/usr/share/nginx/html
在这里插入图片描述
进入数据卷目录中查看
在这里插入图片描述
在这里插入图片描述
删除测试用例demo,重新创建容器,将主机/etc/yum.repos.d/dvd.repo挂载到容器/etc/yum.repos.d/dvd.repo,
bind mount默认权限是读写,此处的ro指定权限为只读
-v选项指定的路径,如果不存在,挂载时会自动创建
在这里插入图片描述

1.2、docker managed volume方式

  • bind mount必须指定host文件系统路径,限制了移植性
  • docker managed volume 不需要指定mount源,docker自动为容器创建数据卷目录
  • 默认创建的数据卷目录都在 /var/lib/docker/volumes 中
  • 如果挂载时指向容器内已有的目录,原有数据会被复制到volume中

docker用nginx镜像创建容器demo,不需要指定mount源,直接挂载到/usr/share/nginx/html
在这里插入图片描述
看到在宿主机中默认创建的数据卷目录地址如图所示
在这里插入图片描述
切换到宿主机对应的目录下,可以看到50x.html和index.html,因为容器内已有的内容会被复制到volume中
在这里插入图片描述

1.3、方式异同点对比

  • 相同点:
    两者都是host文件系统中的某个路径
  • 不同点:
不同点bind mountdocker managed volume
volume位置可任意指定/var/lib/docker/volumes/…
对已有mount point影响隐藏并替换为volume复制原有数据到volume
是否支持单个文件支持不支持,只能是目录
权限控制默认为读写权限,可设置为只读无控制,均为读写权限
移植性移植性弱,与host path绑定移植性强,无需指定host目录

二、convoy卷插件

2.1、卷插件简介

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自身的处理完成客户端的请求。

2.2、convoy卷插件实现

convoy卷插件支持三种运行方式:
(1)devicemapper (2)NFS (3)EBS
以下实验使用NFS方式实现,在所有节点提前挂载NFS存储

两台虚拟机server1和server2:

server1:

安装nfs
在这里插入图片描述
准备挂载目录并更改权限
在这里插入图片描述
server2:

安装nfs
在这里插入图片描述
将server1上准备好的目录传送给server2
在这里插入图片描述
将convoy安装包发送给两个虚拟机
在这里插入图片描述
server1解压安装包
将convey的二进制文件移动到/usr/local/bin下便于直接调用
启动convoy
在这里插入图片描述
convoy套接字文件所在目录如图所示
在这里插入图片描述
在docker目录下创建plugins插件目录,将convoy.sock文件输出到/etc/docker/plugins/convoy.spec
在这里插入图片描述
server1使用convoy创建vol1数据卷
在这里插入图片描述
在这里插入图片描述
server2解压安装包
将convey的二进制文件移动到/usr/local/bin下便于直接调用
启动convey
在这里插入图片描述
在这里插入图片描述
server2在nfs文件夹下可以看到server1刚创建的vol1数据卷
在这里插入图片描述
server2也在docker目录下创建plugins插件目录,将convoy.sock文件输出到/etc/docker/plugins/convoy.spec,可以查看到vol1数据卷
在这里插入图片描述
server1使用vol1挂载测试
在这里插入图片描述
可以正常访问数据卷内的文件和网页
在这里插入图片描述
server2也用vol1挂载测试,可以正常访问网页
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值