0、前言

    前面我们已经介绍过 docker卷(Volume)了,再介绍docker的卷插件会不会有点重复。其实是有必要的,因为docker卷存在一点局限,那么就是卷只能是存在于宿主机上,我们可以创建卷,但只是局限于宿主机,所以docker也知道,所以docker提供了卷插件的api,自己却不实现,在我知道的实现docker卷插件有flocker、convoy这两个插件,其中folcker插件有点诱人:



但是呢遗憾的是,安装上,墙很高,文档呢,github找的比较好。
所以找到了convoy插件,其中其运行方式有三种devicemapper、NFS、EBS。devicemapper是一种设备文件,不太熟悉,弃用,NFS是网络文件系统,说白了就是一种文件共享,一开始不知道是什么,待定,EBS呢,看到AWS字样,我还是弃用吧,最后我选择了NFS,因为这只是一个普通的Linux技术,门槛不高,具体请看Linux nfs安装,安装完再使用即可。
convoy的二进制文件的压缩包在aws上,所以很难,下载下来,这里提供一个链接以供下载convoy.tar.gz,版本是5.0

1、安装环境

1.1安装NFS

请看帖子Linux nfs安装

1.2安装convoy

下载地址:convoy.tar.gz

tar xvf convoy.tar.gz
sudo cp convoy/convoy convoy/convoy-pdata_tools /usr/local/bin/

解压,并讲二进制文件复制到PATH路径下
设置Docker的卷插件:

sudo mkdir -p /etc/docker/plugins/
sudo bash -c 'echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec'

2、启动Daemon

2.1、挂载NFS到本地

sudo mkdir -p /mnt/nfs
sudo mount -t nfs ip_or_domain:/opt/nfs /mnt/nfs

2.2、启动Convoy守护进程

convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs&

然后ctrl+c
停止守护进程:

ps -ef|grep convoy
看到第二个字段数字
kill -9 xxxx

这是因为convoy没有提供停止守护进程的功能
重要提醒:第一次运行上面的convoy daemon命令的时候,会生成一个config文件夹,这个文件夹不要删除,不然客户端的convoy命令就会用不了

3、操作卷

3.1、创建convoy卷实例

convoy create convoy_vol1

会生成一个同名文件夹,在这个卷同名的文件夹创建文件等,等同于操作卷里面的内容。

创建卷快照:

convoy snapshot create convoy_vol1 --name convoy_vil1_s

–name前面的是卷名
加个–name起个名字,不然会是数字

3.2、查询卷

列出全部convoy卷:

convoy list

列出某个convoy卷

convoy inspect convoy_vol1

3.3、备份卷

convoy backup create convoy_vil1_s --dest vfs:///mnt/nfs/

这里返回的url:vfs:///mnt/nfs/?backup=backup-232452f2b6ae4156\u0026volume=convoy_vol1

这条命令不知道对错,主要是vfs:///mnt/nfs/这段,我不太确定。

3.4、还原卷

convoy create convoy_vol1_s_restore --backup vfs:///mnt/nfs/?backup=backup-232452f2b6ae4156\u0026volume=convoy_vol1

可以看出备份和删除是基于快照的。

3.5、删除快照和删除卷

删除快照:

convoy snapshot delete convoy_vol1_s

删除卷:

convoy delete convoy_vol1_s_restore

4、使用卷

docker run --name ubuntu -dit -v convoy_vol1:/data --volume-driver=convoy ubuntu /bin/bash

可以看到功劳全在NFS,但是功能的不得不说丰富了,就是快照和备份恢复功能。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐