docker-跨主机存储
容器分类
从业务数据的角度看,容器可以分为两类:无状态(stateless)容器和有状态(stateful)容器。
无状态是指容器在运行过程中不需要保存数据,每次访问的结果不依赖上一次访问,比如提供静态页面的 web 服务器。
有状态是指容器需要保存数据,而且数据会发生变化,访问的结果依赖之前请求的处理结果,最典型的就是数据库服务器
volume driver
volume driver可以实现跨主机管理 data volume 方案
任何一个 data volume 都是由 driver 管理的,创建 volume 时如果不特别指定,将使用 local 类型的 driver,即从 Docker Host 的本地目录中分配存储空间。如果要支持跨主机的 volume,则需要使用第三方 driver
Rex-Ray driver
特点
- cep 是开源的,而且社区活跃。
- 支持多种 backend,VirtualBox 的 Virtual Media、Amazon EBS、Ceph RBD、OpenStack Cinder 等。
- 支持多种操作系统,Ubuntu、CentOS、RHEL 和 CoreOS。
- 支持多种容器编排引擎,Docker Swarm、Kubernetes 和 Mesos。
- Rex-Ray 安装使用方法非常简单。
安装配置
Rex-Ray 以 standalone 进程的方式运行在 Docker 主机上
在使用 Rex-Ray driver 的主机 docker1 和 docker2 上运行如下命令
curl -sSL https://rexray.io/install | sh
然后创建并编辑 Rex-Ray 的配置文件 /etc/rexray/config.yml

可以使用图形化的在线 Rex-Ray 配置生成器

VirtualBox backend
在 VirtualBox 宿主机,即笔记本上启动 vboxwebsrv 服务:
vboxwebsrv -H 0.0.0.0

执行如下命令关闭 VirtualBox 的登录认证:
VBoxManage setproperty websrvauthlibrary null
在关机状态下修改虚拟机 docker1 和 docker2 的 Storage 配置:
1.删除 IDE controller。
2.设置 SATA controller 的 port 数量为最大值 30。

重启 Rex-Ray 服务:
systemctl restart rexray.service
运行 rexray volume ls 测试 Rex-Ray 是否能够正常工作。

列表中的 volume 是当前 VirtualBox 所有的虚拟磁盘。
创建 Rex-Ray volume
安装插件
从Docker 1.13开始,Docker现在支持一种新的插件架构,其中插件可以作为容器安装。
$ docker plugin install rexray / ebs EBS_ACCESSKEY = access_key EBS_SECRETKEY = secret_key

创建 volume
在 docker1 或 docker2 上执行如下命令创建 volume:
rexray volume create mysql_data --size=2

使用volume启动docker
docker run -dit --name mydb_on_docker1 --volume-driver=rexray -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=passw0rd -d mysql
未创建成功放弃,改用ceph作为后端存储
验证volume
ceph-做后端
1.更改rex-ray的配置文件

其中test-pool是ceph中建的pool

2.重启rex-ray服务
rexray restart
3.创建卷
docker volume create --driver rexray --name=mysqldata --opt=size=2
4.使用卷创建容器
docker run -dit --name mydb_on_docker1 --volume-driver=rexray -v mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=passw0rd -d mysq
5.写数据测试

6.验证数据一致性
删除mydb_on_docker1
重新创建一个容器
docker run --name mydb_on_docker2 -v mysqldata:/var/lib/mysql -d mysql
新容器也使用相同的卷 mysqldata,不过这次不需要指定环境变量 MYSQL_ROOT_PASSWORD,因为密码已经保存到 mysqldata 里面了。
现在 Rex-Ray volume mysqldata 已经挂载到 docker2:

① 进入到容器 mydb_on_docker2。
② 登录数据库,密码与 mydb_on_docker1 一致。
③ 切换到数据库 mysql。
④ 确认之前由 mydb_on_docker1 创建的表和写入的数据完好无损。
docker-跨主机存储的更多相关文章
- centos7下安装docker(16.docker跨主机存储)
从业务数据的角度看,容器可以分为两类:无状态(stateless)容器和有状态(stateful)容器. 无状态:是指容器在运行的过程中不需要保存数据,每次访问的结果不依赖上一次的访问,比如提供静态页 ...
- Docker跨主机网络——overlay
前言 在Docker网络--单host网络一文中,我为大家总结了Docker的单机网络相关知识和操作,单机网络比较容易.本文我为大家总结Docker跨主机通信相关知识.同样本文大部分内容以CloudM ...
- 基于Ceph分布式集群实现docker跨主机共享数据卷
上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷. 1.环境准备 在原来的环境基础之上,新增一台cen ...
- Docker跨主机网络实践
Docker使用中网络管理是最麻烦的,在项目初始化前期就需要进行合理的规划,如果在比较理想的单主机的网络通信是比较简单的,但如果涉及到跨主机的网络就需要使用docker自带的overlay netwo ...
- Docker使用rexray做跨主机存储
Rex-Ray 是一个优秀的 Docker volume driver,不过只有最新版docker才支持. Rex-Ray 以 standalone 进程的方式运行在 Docker 主机上,安装方法很 ...
- 安装docker跨主机网络flannel
一.实验环境 机器 操作系统 安装服务 172.16.4.36 centos7 docker etcd flannel 172.16.4.37 centos7 docker etcd flanne ( ...
- docker 跨主机网络:overlay 简介
简介 docker 在早前的时候没有考虑跨主机的容器通信,这个特性直到 docker 1.9 才出现.在此之前,如果希望位于不同主机的容器能够通信,一般有几种方法: 使用端口映射:直接把容器的服务端口 ...
- docker 实践十一:docker 跨主机通讯
在上一篇了解了关于 docker 的网络模型后,本篇就基于上一篇的基础来实现 docker 的跨主机通信. 注:环境为 CentOS7,docker 19.03. 本篇会尝试使用几种不同的方式来实现跨 ...
- Docker 跨主机网络方案分析
PS:文章首发公众号,欢迎大家关注我的公众号:aCloudDeveloper,专注技术分享,努力打造干货分享平台,二维码在文末可以扫,谢谢大家. 上篇文章介绍了容器网络的单主机网络,本文将进一步介绍多 ...
- Docker跨主机通信(九)--技术流ken
容器网络 在前面的博客中已经详细讲解了几种网络方案: none, host, bridge,user-defined.但是他们只是解决了单个主机间的容器的通信问题,并不能实现多个主机容器之间的通信.本 ...
随机推荐
- 如何在vue单页应用中使用百度地图
作为一名开发人员,每次接到开发任务,我们首先应该先分析需求,然后再思考技术方案和解决方案.三思而后行,这是一个好的习惯. 需求:本项目是采用vue组件化开发的单页应用项目,现需要在项目中引入百度的地图 ...
- 从零学习Fluter(四):Flutter中ListView组件系列详展
今天继续研究了一些Flutter,主要时关于ListVIew那一块的东西,有 SingleChildScrollViewListViewGridViewCustomScrollView 感觉Flutt ...
- 南京邮电大学java程序设计作业在线编程第七次作业
王利国的"Java语言程序设计第7次作业(2018)"详细 主页 我的作业列表 作业结果详细 总分:100 选择题得分:60 1. 下列叙述中,错误的是( ). A.Java中, ...
- 20181218-PostgreSQL数据库Extension管理
20181218-PostgreSQL数据库Extension管理 注意:在集群的一个数据库中安装扩展,在集群的另一个数据库要使用的话,仍需安装 1. 查看当前已安装Extension postgre ...
- 英语背单词app
乐词 √ 真人发音 词根词缀 小组计划及时复习 真人例句 墨墨 单词量测试做的特别好 扇贝 哈哈哈,没用过 百词斩 同样25个单词,我在乐词中背了20分钟,在百词斩中需要60分钟. 原因在于 要记单词 ...
- LeetCode算法题-Maximum Depth of N-ary Tree(Java实现)
这是悦乐书的第261次更新,第274篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第128题(顺位题号是559).给定n-ary树,找到它的最大深度.最大深度是从根节点到 ...
- eclipse弃坑记第一篇之在idea上配置Tomcat环境并创建Javaweb项目的详细步骤原创
IntelliJ IDEA是一款功能强大的开发工具,在代码自动提示.重构.J2EE支持.各类版本工具(如git.svn.github).maven等方面都有很好的应用. IntelliJ IDEA有免 ...
- 有效的字母异位词的golang实现
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 输入: s = "anagram", t = "nagaram" 输出: ...
- git如何设置ssh密钥
git设置ssh密钥 目前git支持https和git两种传输协议,github分享链接时会有两种协议可选: 1.Clone with SSH 2.Clone with HTTPS git在使用htt ...
- echarts堆叠图添加总量
echarts在使用中往往会遇到需要展示总量信息的情况,比较典型的就是3维统计的堆叠柱状图 堆叠是在柱状图的基础上,给几项设置同一stack来实现的.不考虑在tips中实现总和,有两种方式可以实现总和 ...