介绍
https://github.com/rancher/convoy
A Docker volume plugin, managing persistent container volumes.
安装步骤
两个注意事项:
以下步骤需要在所有Docker swarm节点上都做一遍,也可以使用这位三哥的自动化脚本:https://gist.github.com/pi0/55d1cfee4d201ffcd125441c8e56c841
还有个前提条件:NFS也需要在每个节点都提前挂载好
1. 下载安装
$ wget https://github.com/rancher/convoy/releases/download/v0.5.0/convoy.tar.gz
tar xvf convoy.tar.gz
$ sudo cp convoy/convoy convoy/convoy-pdata_tools /usr/local/bin/
设置Docker的卷插件
$ sudo mkdir -p /etc/docker/plugins/
$ sudo bash -c 'echo "unix:///var/run/convoy/convoy.sock" > /etc/docker/plugins/convoy.spec'
2. 启动Daemon
$ sudo mkdir -p /mnt/nfs
$ sudo mount -t nfs 172.16.36.**:/home/erick/nfs /mnt/nfs
启动Convoy守护程序:
$ sudo convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs
使用
1. 创建、删除卷
$ sudo convoy create <volume_name>
$ sudo convoy delete <volume_name>
2. 查看卷
sudo convoy list
sudo convoy inspect <volume_name>
3. 对卷做快照
sudo convoy snapshot create vol1 --name snap1vol1
sudo convoy snapshot delete snap1vol1
4. 对镜像进行备份
sudo convoy backup create snap1vol1 --dest vfs:///opt/backup/
5. 还原备份
sudo convoy create res1 --backup <url>
6. 使用卷
看了这么多,最终目的其实就是下面这一条,使用基于NFS的卷挂载docker存储,使集群的其他机器都使用同一个后端NFS存储,实现需要数据持久化容器的动态迁移。
$ docker run --name mongo -it -p 27017:27017 -v vol1:/data/db --volume-driver=convoy mongo:3