docker跨主机储存

一、driver介绍

      任何一个 data volume都是由driver管理的.创建volume时如果不特别指定 将使用local类型的driver,即从Docker Host的本地目录中分配存储空间。

    如果要支持跨主机的volume,则需要使用第三方 driver.目前已经有很多可用的 driver,比如使用Azure File Storagedriver,

   使用GlusterFSdriver,完整的列表可参考 https://docs.docker.eom/engine/extend/legacy-plugins/#volumiplugins Rgx・Ray drive:

 1.Rex-Ray是开源的'而且社区活跃。

 2.支持多种 backend, VirtualBox Virtual MediaAmazon EBSX Ceph RBDV OpenStack Cinder 等。

 3.支持多种操作系统,Ubuntu. CentOSs RHEL CoreOSe

 4.支持多种容器编排引擎,Docker Swarm  KubernetesMgsos

 5. Rex-Ray安装使用方法非常简单。

二、安装部署

   1.安装配置rex-ray

 Rex-Raystandalone进程的方式运行在Docker主机上,安装方法很简单,

  在需要使用Rex-Ray driver的主机dockerldocker2上运行如下命令:

curl -sSL https://dl.bintray.com/rexray/rexray/install |sh

 创建编辑rex-ray的配置文件 /etc/rexray/config.yml,可以使用图形化的在线rex-ray配置生成器

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

 配置文件内容:

    1 •使用VirtualBoxVirtual Media作为backendz提供data volume 

     原因是我们的实验环境就是用的VirtualBox,不需要额外部署存储系统,作为验证和实践,已经足够了。如果是生产系统,选择更健壮的backend, 比如:Ceph RBD

    2.http://192.168.0.5:18083 VirtualBox 宿主机的服务端口。

    3.volumePath 是 VirtualBox 宿主机上存放 data volume 的目录。

    4.SATAcontroller的名字.不用修改。

2.配置virtuaibox  backend

     VirtualBox 宿主机.启动 vboxwebsrv 服务: vboxwebsrx^ -H 0.0.0.0

      执行如下命令关闭 VirtualBox 的登录认证:VBoxManage setproperty websrvauthlibrary null

VBoxManage setproperty websrvauthlibrary null

  关机状态修改虚拟机docker1和docker2的storage配置,删除IDE controller

 

3.重启rex-ray服务:

systemctl restart rexray (重启服务)
rexray  volume ls  (查看rex-ray是否正常工作)

  可能会发生查看显示不到,从新加载下主机网页就可以了

4.使用rex-ray volume

       创建和使用Rex-Ray volumeo,在docker1或docker2上执行创建命令

docker volume create  --driver  rexray --name=mysqldata --opt=size=2

    volume mysqldata创建成功,大小为2GB  VirtualBox宿主机中也能看到mysqldata

 因为VirtualBox使用的是thin-provisioning, volume初始分配的空间很小。接下来我们将:

  •dokcerl上启动MySQL容器mydby_on_docker1,并使用mysqldata作为数据卷。

 •更新数据库,然后销毁mydb_on_docker1

 .在docker2上启动mysql容器mydb_on_docker2,也使用mysqldata作为数据卷。然后验证数据有效性。

5.创建容器并使用数据卷

docker   run   -dit    --name   mysql1   -v  mysqldata:/var/lib/mysql    -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

    在数据中创建数据

docker exec -it mysql1 sh (进入数据库)
mysql -uroot -p123456 (连接数据库)
create database test;
use test;
create table test(id  int,name varchar(20));
insert into mysql values(1,"aaa");
insert into mysql values(2,"bbb");

  

6.删除容器

docker rm -f mysql1

7.docker2上创建新的容器

docker   run   -dit   --name   mysql2    -v  mysqldata:/var/lib/mysql     mysql:5.7
docker exec -it mysql2 sh

新容器也使用相同的卷mysqldata,不过这次不需要指走环境变量MYSQL_ROOT_PASSWORDf因为密码已经保存到 mysqldata 里面了。现在 Rex-Ray volume mysqldata 已经挂载到 docker2:

   1.进入到容器mydb_on_docker

    2登录数据库,密码与mydb_on_docker1 致。

   3.切换到数据库mysql

   4.确认之 前由mydb_on_docker1创建的表和写入的数据完好无损。

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

 如何使用其他storage providervolume driver,部署和配置storage provider会有所不同,

不过Docker在使用volume的方 式都是一样的:通过docker volume create -driver创建volume创建容器时用-v指走上一步创建的volume.

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值