创建 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(76)

Posted CloudMan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(76)相关的知识,希望对你有一定的参考价值。

前面我们安装部署了 Rex-Ray,并且成功配置 VirtualBox backend,今天演示如何创建和使用 Rex-Ray volume。

在 docker1 或 docker2 上执行如下命令创建 volume:

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

技术分享

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

技术分享

因为 VirtualBox 使用的是 thin-provisioning,volume 初始分配的空间很小。

接下来我们将:

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

  2. 更新数据库,然后销毁 mydb_on_docker1

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

创建容器并使用数据卷

在 dokcer1 上执行如下命令,启动 MySQL 容器:
docker run --name mydb_on_docker1 -v mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=passw0rd -d mysql

-v mysqldata:/var/lib/mysql 将之前创建的 volume mount 到 MySQL 的数据目录。

我们接下来从更底层分析一下这个 mount 是如何实现的。

首先在 VirtualBox 中查看虚拟机 docker1 的 storage 配置:

技术分享

Rex-Ray volume mysqldata 已经挂载到 docker1。

执行 docker volume inspect mysqldata

技术分享

mysqldata 已被 mount 到 docker1 目录 /var/lib/libstorage/volumes/mysqldata/data,执行 docker inspect mydb_on_docker1 查看容器的 volume 信息:

技术分享

/var/lib/libstorage/volumes/mysqldata/data 被 mount 到了容器的目录 /var/lib/mysql,这样 Rex-Ray volume mysqldata 就已经 mount 到了容器 mydb_on_docker1

技术分享

更新数据库

按照如下步骤更新 MySQL 数据:

技术分享

① 进入容器 mydb_on_docker1

② 登录数据库,输入容器启动时由环境变量 MYSQL_ROOT_PASSWORD 指定的密码。

③ 切换到数据库 mysql

④ 创建数据库表 my_id

⑤ 插入一条数据。

⑥ 确认数据已经写入。

执行 docker rm -f mydb_on_docker1 删除容器。

现在容器已经被销毁了,下一节我们将在 docker2 上创建新容器并重新使用 volume mysqldata


书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html


技术分享

以上是关于创建 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(76)的主要内容,如果未能解决你的问题,请参考以下文章

跨主机使用 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(77)

如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)

如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)

如何安装和配置 Rex-Ray?- 每天5分钟玩转 Docker 容器技术(74)

Create Volume 操作(Part III) - 每天5分钟玩转 OpenStack(52)

Attach Volume 操作(Part I) - 每天5分钟玩转 OpenStack(53)