1

我正在尝试使用 Rex-Ray 插件将数据卷安装到 docker 容器。我选择了 VirtualBox Media 作为存储提供商。

我正在使用的版本是:

  • 码头工人 1.12.5
  • Rex-Ray 0.6.3 和 libStorage 0.3.5
  • VirtualBox 基础包 5.1.12

设置:

  • 一台在 VirtualBox 中运行的 CentOS 7 虚拟机
  • 在 CentOS 7 虚拟机中运行的 Docker 1.12.5
  • Rex-Ray 在 CentOS 7 VM 中安装并运行
  • Mac OS X 10.12.1 主机

在 Mac OS 主机上:

1. 我关闭了 VirtualBox SOAP API 身份验证VBoxManage setproperty websrvauthlibrary null

2. 我启动 VirtualBox SOAP API vboxwebsrv -H 0.0.0.0 -v以允许 Rex-Ray 与 VirtualBox 通信

在 CentOS 7 VM 中,我正在执行以下操作(以 root 身份):

1. 启动 Dockersystemctl 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,并且是 Mac OS X 主机上volumePath的现有文件夹,创建后将在其中存储卷

此配置文件采用与https://github.com/codedellemc/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/dataPostgres 容器中的目录:

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 存储设置如下图所示:

虚拟机存储设置

非常感谢任何帮助

4

1 回答 1

1

问题是 VirtualBox 存储设置中 SATA 控制器的端口数(如问题中链接的图像所示)默认设置为 1。

解决方案是将此计数更改为您认为要安装的卷数。

根据 Rex-Ray 文档,建议计数为 30:http ://rexray.readthedocs.io/en/v0.3.3/user-guide/storage-providers/#virtualbox

以下配置对我有用:

VirtualBox 存储设置的图像

于 2016-12-30T12:26:33.890 回答