天天看點

建立 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

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

volume <code>mysqldata</code> 建立成功,大小為 2GB。在 VirtualBox 主控端中也能看到 <code>mysqldata</code>。

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

因為 VirtualBox 使用的是 thin-provisioning,volume 初始配置設定的空間很小。

接下來我們将:

在 dokcer1 上啟動 MySQL 容器 <code>mydb_on_docker1</code>,并使用 <code>mysqldata</code> 作為資料卷。

更新資料庫,然後銷毀 <code>mydb_on_docker1</code>。

在 dokcer2 上啟動 MySQL 容器 <code>mydb_on_docker2</code>,也使用 <code>mysqldata</code> 作為資料卷,然後驗證資料的有效性。

在 dokcer1 上執行如下指令,啟動 MySQL 容器:

docker run --name mydb_on_docker1 -v mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=passw0rd -d mysql

<code>-v mysqldata:/var/lib/mysql</code> 将之前建立的 volume mount 到 MySQL 的資料目錄。

我們接下來從更底層分析一下這個 mount 是如何實作的。

首先在 VirtualBox 中檢視虛拟機 docker1 的 storage 配置:

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

Rex-Ray volume <code>mysqldata</code> 已經挂載到 docker1。

執行 <code>docker volume inspect mysqldata</code>:

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

<code>mysqldata</code> 已被 mount 到 docker1 目錄 <code>/var/lib/libstorage/volumes/mysqldata/data</code>,執行 <code>docker inspect mydb_on_docker1</code> 檢視容器的 volume 資訊:

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

<code>/var/lib/libstorage/volumes/mysqldata/data</code> 被 mount 到了容器的目錄 <code>/var/lib/mysql</code>,這樣 Rex-Ray volume <code>mysqldata</code> 就已經 mount 到了容器 <code>mydb_on_docker1</code>。

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

按照如下步驟更新 MySQL 資料:

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

① 進入容器 <code>mydb_on_docker1</code>。

② 登入資料庫,輸入容器啟動時由環境變量 <code>MYSQL_ROOT_PASSWORD</code> 指定的密碼。

③ 切換到資料庫 <code>mysql</code>。

④ 建立資料庫表 <code>my_id</code>。

⑤ 插入一條資料。

⑥ 确認資料已經寫入。

執行 <code>docker rm -f mydb_on_docker1</code> 删除容器。

現在容器已經被銷毀了,下一節我們将在 docker2 上建立新容器并重新使用 volume mysqldata。

書籍:

1.《每天5分鐘玩轉Docker容器技術》

<a href="https://item.jd.com/16936307278.html" target="_blank">https://item.jd.com/16936307278.html</a>

2.《每天5分鐘玩轉OpenStack》

<a href="https://item.jd.com/12086376.html" target="_blank">https://item.jd.com/12086376.html</a>

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