Docker使用rexray做跨主机存储

Rex-Ray 是一个优秀的 Docker volume driver,不过只有最新版docker才支持。

Rex-Ray 以 standalone 进程的方式运行在 Docker 主机上,安装方法很简单,在需要使用 Rex-Ray driver 的主机 docker1 和 docker2 上运行如下命令:

curl -sSL https://rexray.io/install | sh

然后创建并编辑 Rex-Ray 的配置文件 /etc/rexray/config.yml

libstorage:
  service: rbd
rbd:

重启 Rex-Ray 服务:

  systemctl restart rexray.service

创建块设备:

  rbd create --size 4096 my_data

运行 rexray volume ls 测试 Rex-Ray 是否能够正常工作。

运行docker volume ls 查看可用的卷。

在 dokcer1 上启动 MySQL 容器 mydb_on_docker1,并使用 mysqldata 作为数据卷。

  docker run --name mydb1 -v my_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql

更新数据库,然后销毁 mydb1:

  docker rm -f mydb_on_docker1

在 dokcer2 上启动 MySQL 容器 mydb2,也使用 my_data 作为数据卷,然后验证数据的有效性。

  docker run --name mydb2 -v my_data:/var/lib/mysql -d mysql

新容器也使用相同的卷 my_data,不过这次不需要指定环境变量 MYSQL_ROOT_PASSWORD,因为密码已经保存到 my_data 里面了。

Rex-Ray 可以提供跨主机的 volume,其生命周期不依赖 Docker Host 和容器,是 stateful 容器理想的数据存储方式。

如何使用其他 storage provider 的 volume driver,部署和配置 storage provider 会有所不同,不过 Docker 在使用 volume 的方式都是一样的:

  通过 docker volume create --driver 创建 volume,创建容器时用 -v 指定上一步创建的 volume

原文地址:https://www.cnblogs.com/zhangyin6985/p/8746215.html