容器網路(九)建立 Rex-Ray volume【71】
(四)建立 Rex-Ray volume
前面我們安裝部署了 Rex-Ray,並且成功配置 VirtualBox backend,今天演示如何建立和使用 Rex-Ray volume。
在 docker1 或 docker2 上執行如下命令建立 volume:
docker volume create --driver rexray --name=mysqldata --opt=size=2
volumemysqldata
建立成功,大小為 2GB。在 VirtualBox 宿主機中也能看到mysqldata
。
因為 VirtualBox 使用的是 thin-provisioning,volume 初始分配的空間很小。
接下來我們將:
- 在 dokcer1 上啟動 MySQL 容器
mydb_on_docker1
,並使用mysqldata
作為資料卷。 - 更新資料庫,然後銷燬
mydb_on_docker1
。 - 在 dokcer2 上啟動 MySQL 容器
mydb_on_docker2
,也使用mysqldata
作為資料卷,然後驗證資料的有效性。
(1)建立容器並使用資料卷
在 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
/var/lib/libstorage/volumes/mysqldata/data
被 mount 到了容器的目錄/var/lib/mysql
,這樣 Rex-Ray volumemysqldata
就已經 mount 到了容器mydb_on_docker1
。
(2)更新資料庫
按照如下步驟更新 MySQL 資料:
① 進入容器 mydb_on_docker1
。
② 登入資料庫,輸入容器啟動時由環境變數 MYSQL_ROOT_PASSWORD
指定的密碼。
③ 切換到資料庫 mysql
。
④ 建立資料庫表 my_id
。
⑤ 插入一條資料。
⑥ 確認資料已經寫入。
執行 docker rm -f mydb_on_docker1
刪除容器。
現在容器已經被銷燬了,下一節我們將在 docker2 上建立新容器並重新使用 volume mysqldata。