一。Rex-Ray以standalone进程的方式运行在docker主机上,安装方法很简单:在docker1和docker2上运行如下命令:
curl -sSL https://dl.bintray.com/emccode/rexray/install | sh
然后创建并编辑Rex-Ray的配置文件/etc/rexray/config.yml
也可以使用图形化的在线Rex-Ray配置生成:http://rexrayconfig.codedellemc.com/
配置文件的内容如下:
1. service: virtualbox 使用virtualbox的virtual media作为backend,提供data volume。原因是我们的实验环境就是virtualbox,不需要额外部署存储系统,作为验证和实践,已经足够多了。如果是生产系统,肯定得选择更加稳定的backend,比如ceph rbd
2. endpoint: http://192.168.99.1:18083 是vietualbox宿主机的服务端口,后面会演示如何启动这个服务
3.volumePath: /Users/<your-name>/VirtualBox/Volumes 是vietual宿主机上存放data volume的目录
4. controllerName: SATA 是controller的名字,不用修改
二 .在每台host主机上配置完Rex-Ray driver之后,要配置backend
注:由于实验环境的原因,没有做实验,就不展示了
三。在每台host主机上分别创建volume
docker volume create --driver rexray --name=mysqldata --opt=size=2
四。先在一台host主机上运行容器并使用数据卷(mysqldata)
宿主机提供的backend被容器使用过程:
1.backend首先提供了volume,如:mysqldata
2.mysqldata先被挂载到host主机上,host主机会自动创建一个挂载点
3.host主机上的挂载点通过容器运行时的指定,被挂载到容器上
五。更新容器中的数据,删除容器
六。在另外一个host主机上重新运行一个容器,并挂载相同的volume(mysqldata),这个volume(mysqldata)会被冲重新使用。使用过程和之前一样
总结:1.假设有两个host主机docker1和docker2,当我们在docker1上运行了两个有状态的容器时,要分别创建两个不同名的volume,
2.volume实际是backend的一部分
3.volume有点类似共享存储