Rex-Ray プラグインを使用してデータ ボリュームを Docker コンテナーにマウントしようとしています。ストレージ プロバイダーとして VirtualBox Media を選択しました。
私が使用しているバージョンは次のとおりです。
- ドッカー 1.12.5
- Rex-Ray 0.6.3 と libStorage 0.3.5
- VirtualBox 基本パッケージ 5.1.12
セットアップ:
- VirtualBox で実行されている 1 つの CentOS 7 VM
- CentOS 7 VM で実行されている Docker 1.12.5
- CentOS 7 VM にインストールされて実行されている Rex-Ray
- Mac OS X 10.12.1 ホスト マシン
Mac OS ホスト マシンの場合:
1. VirtualBox SOAP API認証をオフにしますVBoxManage setproperty websrvauthlibrary null
2. vboxwebsrv -H 0.0.0.0 -v
Rex-Ray が VirtualBox と通信できるように、VirtualBox SOAP API を開始します。
CentOS 7 VM では、次のことを (ルートとして) 実行しています。
1. でDockerを起動systemctl start docker
2. Rex-Ray/etc/rexray/config.yml
ファイルを作成します。
libstorage:
service: virtualbox
integration:
volume:
operations:
mount:
preempt: true
virtualbox:
endpoint: http://192.168.99.1:18083
volumePath: /Users/<username>/Volumes
controllerName: SATA
ここで、endpoint
は VirtualBox SOAP API が Mac OS X ホスト マシンで実行される IP であり、volumePath
作成後にボリュームが保存される Mac OS X ホスト上の既存のフォルダーです。
この構成ファイルは、 https://github.com/codeellemc/labs/tree/master/setup-virtualbox-dockermachineの Dell EMC チュートリアルにあるのと同じ形式に従います。
3. を使用してRex-Rayサービスを開始しますrexray start
4 . で1GBのボリュームを作成
docker volume create -d rexray --name pg_data --opt=size=1
5. postgres
公式イメージを使用して Postgres Docker コンテナーを実行してみます。前に作成したrexray
ボリューム/var/lib/postgresql/data
は、Postgres コンテナー内のディレクトリにマウントされます。
docker run -dit --name pg -e POSTGRES_PASSWORD=mysecretpassword --volume-driver=rexray -v pg_data:/var/lib/postgresql/data postgres
コンテナの起動に失敗し、次のエラーが表示されます
Error response from daemon: VolumeDriver.Mount: {"Error":"VirtualBox error: Invalid managed object reference """}
次の図は、私の VirtualBox ストレージ設定を示しています。
どんな助けでも大歓迎です