Docker 数据卷插件---convoy

        docker卷默认使用的是local类型的驱动,只能存在宿主机,跨主机操作时,需要第三方驱动,官方连接为:https://docs.docker.com/engine/extend/legacy_plugins/

对于两台不同主机间容器的数据卷操作,官方提供了API接口,开发者可以根据实际需求进行定制卷插件驱动。

工作过程:

图 1 第三方驱动的过程

【说明】plugin的启动和停止,并不依赖于docker,docker 依靠在默认路径下查找unix socket文件来自动发现插件。当客户端与docker交互并使用插件创将数据卷时,docker会在后端找到插件对应的 socket文件,建立连接并发起相应的API请求,最终结合daemon自身的处理完成客户端请求。

Convoy插件使用:

        convoy卷插件底层存储支持三种模式:devicemapper、NFS、EBS(亚马逊的弹性化存储),需要在所有docker节点提前挂载NFS存储。

挂载NFS:

##挂载NFS
/server1
[root@server1 ~]# mkdir /mnt/nfs
[root@server1 ~]# yum install -y nfs-utils
[root@server1 ~]# systemctl start rpcbind  ##rpcbind工具可以将RPC程序号码和通用地址互相转换
[root@server1 ~]# vim /etc/exports                  ##共享配置文件
	                /mnt/nfs *(rw,no_root_squash)
[root@server1 ~]# systemctl  start nfs
[root@server1 ~]# exportfs -rv         ##共享文件生效

/server2
[root@docker nfs]# mkdir /mnt/nfs
[root@docker nfs]# yum install -y nfs-utils
[root@docker nfs]# systemctl start rpcbind  
[root@docker nfs]# showmount -e 192.168.43.71            ##客户端查看服务器列表
[root@docker nfs]# mount 192.168.43.71:/mnt/nfs /mnt/nfs
图 2 server1上配置nfs

 

图 3 server1上设置nfs共享路径

 

图 4 server2 上配置nfs

 

图 5 server2 上查看服务端的共享目录及测试

 

配置Convoy:

##配置convoy

server1/

[root@server1 nfs]# wget https://github.com/rancher/convoy/releases/download/v0.5.2/convoy.tar.gz
[root@server1 nfs]# tar zxf convoy.tar.gz
[root@server1 nfs]# mv convoy/convoy* /usr/local/bin
[root@server1 nfs]# convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &
                                                        ##指定convoy使用的驱动和路径
[root@server1 nfs]# mkdir -p /etc/docker/plugins/
[root@server1 nfs]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec
[root@server1 nfs]# convoy create vol1

server2/

[root@server2 nfs]# wget https://github.com/rancher/convoy/releases/download/v0.5.2/convoy.tar.gz
[root@server2 nfs]# tar zxf convoy.tar.gz
[root@server2 nfs]# mv convoy/convoy* /usr/local/bin
[root@server2 nfs]# convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &
[root@server2 nfs]# mkdir -p /etc/docker/plugins/
[root@server2 nfs]# echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec

图 6 server1上配置convoy

 

图 7 server1上设置convoy驱动

 

创建卷:

//server1//

###创建卷
[root@server1 nfs]# convoy create vol1

##查看挂载的卷信息
[root@server1 nfs]# convoy list

##使用卷对容器进行挂载
[root@server1 nfs]# docker run -d --name demo -v vol1:/usr/share/nginx/html nginx

##更改卷内信息
[root@server1 vol1]# echo TEST PAGE > index.html 

server2///
###查看是否创建
[root@server2 ~]# cd /etc/nfs/
[root@server2 nfs]# ls

###查看server1上件内容更改后,serve2中是否发生变化
[root@server2 ~]# cat /etc/nfs/index.html
图 8 server1中创建卷

 

图 9 server1中使用convoy的卷启动docker

 

图 10 server1中查看挂载信息

 

图 11 server2 中测试内容是否同步

 

【说明】跨主机的卷同步就是通过,nfs的消息传递,使不同主机之间的卷内容相同,故当其中一台主机宕机时,也可以通过其他主机来进行恢复。

convoy的其他命令:

convoy卷插件子命令
convoy list		列出卷
convoy delete		删除卷
convoy snapshot create	创建快照
convoy snapshot delete	删除快照
convoy backup create		创建备份
convoy create res1 --backup <url>		还原备份
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值