Rex-Ray 是一個優秀的 Docker volume driver,不過只有最新版docker才支持。
Rex-Ray 以 standalone 進程的方式運行在 Docker 主機上,安裝方法很簡單,在需要使用 Rex-Ray driver 的主機 docker1 和 docker2 上運行如下命令:
curl -sSL https://rexray.io/install | sh
然后創建並編輯 Rex-Ray 的配置文件 /etc/rexray/config.yml
libstorage:
service: rbd
rbd:
重啟 Rex-Ray 服務:
systemctl restart rexray.service
創建塊設備:
rbd create --size 4096 my_data
運行 rexray volume ls 測試 Rex-Ray 是否能夠正常工作。
運行docker volume ls 查看可用的卷。
在 dokcer1 上啟動 MySQL 容器 mydb_on_docker1,並使用 mysqldata 作為數據卷。
docker run --name mydb1 -v my_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql
更新數據庫,然后銷毀 mydb1:
docker rm -f mydb_on_docker1
在 dokcer2 上啟動 MySQL 容器 mydb2,也使用 my_data 作為數據卷,然后驗證數據的有效性。
docker run --name mydb2 -v my_data:/var/lib/mysql -d mysql
新容器也使用相同的卷 my_data,不過這次不需要指定環境變量 MYSQL_ROOT_PASSWORD,因為密碼已經保存到 my_data 里面了。
Rex-Ray 可以提供跨主機的 volume,其生命周期不依賴 Docker Host 和容器,是 stateful 容器理想的數據存儲方式。
如何使用其他 storage provider 的 volume driver,部署和配置 storage provider 會有所不同,不過 Docker 在使用 volume 的方式都是一樣的:
通過 docker volume create --driver 創建 volume,創建容器時用 -v 指定上一步創建的 volume
