1. 程式人生 > >創建 Rex-Ray volume - 每天5分鐘玩轉 Docker 容器技術(76)

創建 Rex-Ray volume - 每天5分鐘玩轉 Docker 容器技術(76)

tac vol 宿主機 配置 ott get float targe mic

前面我們安裝部署了 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)