前面咱們安裝部署了 Rex-Ray,而且成功配置 VirtualBox backend,今天演示如何建立和使用 Rex-Ray volume。html
在 docker1 或 docker2 上執行以下命令建立 volume:mysql
docker volume create --driver rexray --name=mysqldata --opt=size=2sql
volume mysqldata
建立成功,大小爲 2GB。在 VirtualBox 宿主機中也能看到 mysqldata
。docker
由於 VirtualBox 使用的是 thin-provisioning,volume 初始分配的空間很小。數據庫
接下來咱們將:code
在 dokcer1 上啓動 MySQL 容器 mydb_on_docker1
,並使用 mysqldata
做爲數據卷。htm
更新數據庫,而後銷燬 mydb_on_docker1
。部署
在 dokcer2 上啓動 MySQL 容器 mydb_on_docker2
,也使用 mysqldata
做爲數據卷,而後驗證數據的有效性。get
建立容器並使用數據卷虛擬機
在 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