Docker Volume Plug-ins

Plug it in, plug it in...


Overview

This page reviews the REX-Ray Docker volume plug-ins, available for Docker 1.13+.

Getting Started

This section describes how to get started with REX-Ray Docker volume plug-ins!

Installation

Docker plug-ins can be installed with following command:

$ docker plugin install rexray/driver[:version]

In the above command line, if [:version] is omitted, it's equivalent to the following command:

$ docker plugin install rexray/driver:latest

The latest tag refers to the most recent, GA version of a plug-in. The [:version] component is known as a Docker tag. It follows the semantic versioning model. However, in addition to latest, there is also the edge tag which refers to the most recent version built from the master development branch.

note

Please note that most of REX-Ray's plug-ins must be configured and installed at the same time since Docker starts the plug-in when installed. Otherwise the plug-in will fail since it is not yet configured. Please see the sections below for platform-specific configuration options.

Configuration

Docker volume plug-ins are configured via environment variables, and all REX-Ray plug-ins share the following, common configuration options:

Environment Variable Description Default Value
REXRAY_FSTYPE The type of file system to use ext4
REXRAY_LOGLEVEL The log level warn
REXRAY_PREEMPT Enable preemption false

Amazon

REX-Ray has plug-ins for multiple Amazon Web Services (AWS) storage services.

Elastic Block Service

Elastic File System

Simple Storage Service

Ceph

REX-Ray includes plug-ins for the following Ceph storage technologies.

RADOS Block Device

Dell EMC

REX-Ray includes plug-ins for several Dell EMC storage platforms.

Isilon

ScaleIO

The ScaleIO plug-in can be installed with the following command:

docker plugin install rexray/scaleio

Requirements

The only requirement for ScaleIO plug-in is that the ScaleIO SDC toolkit must be installed on the same host on which Docker is running.

Configuration

The following environment variables can be used to configure the ScaleIO plug-in:

Environment Variable Description Default Required
SCALEIO_ENDPOINT The ScaleIO gateway endpoint
SCALEIO_INSECURE Flag for insecure gateway connection true
SCALEIO_USECERTS Flag indicating to require certificate validation false
SCALEIO_USERNAME ScaleIO user for connection
SCALEIO_PASSWORD ScaleIO password
SCALEIO_SYSTEMID The ID of the ScaleIO system to use
SCALEIO_SYSTEMNAME The name of the ScaleIO system to use If SCALEIO_SYSTEMID is omitted
SCALEIO_PROTECTIONDOMAINID The ID of the protection domain to use
SCALEIO_PROTECTIONDOMAINNAME The name of the protection domain to use If SCALEIO_PROTECTIONDOMAINID is omitted
SCALEIO_STORAGEPOOLID The ID of the storage pool to use
SCALEIO_STORAGEPOOLNAME The name of the storage pool to use If SCALEIO_STORAGEPOOLID is omitted
SCALEIO_THINORTHICK The provision mode (Thin|Thick)Provisioned
SCALEIO_VERSION The version of ScaleIO system

Installation

The following example illustrates how to install version 0.7.20 of the ScaleIO plug-in:

$ docker plug-in install rexray/scaleio:0.7.20 \
  REXRAY_FSTYPE=xfs \
  REXRAY_LOGLEVEL=warn \
  REXRAY_PREEMPT=false \
  SCALEIO_ENDPOINT=https://localhost/api \
  SCALEIO_INSECURE=true \
  SCALEIO_USERNAME=admin \
  SCALEIO_PASSWORD=MySCaleio123 \
  SCALEIO_SYSTEMNAME=scaleio \
  SCALEIO_PROTECTIONDOMAINNAME=default \
  SCALEIO_STORAGEPOOLNAME=default

The above command prompts the user to acknowledge the plug-ins required permissions:

Plug-in "rexray/scaleio:0.7.20" is requesting the following privileges:
 - network: [host]
 - mount: [/dev]
 - mount: [/bin/emc]
 - mount: [/opt/emc/scaleio/sdc]
 - allow-all-devices: [true]
 - capabilities: [CAP_SYS_ADMIN]
Do you grant the above permissions? [y/N]

Once installed, the status of the plug-in can be retrieved like so:

$ docker plug-in ls
ID                  NAME                            DESCRIPTION                    ENABLED
5c08e5947d8f        rexray/scaleio:0.7.20           REX-Ray for EMC Dell ScaleIO   true

Create a volume

The following example illustrates creating a volume using the ScaleIO plug-in:

$ docker volume create --driver rexray/scaleio:0.7.0-20 --name test-vol-1

Verify the volume was successfuly created by listing the volumes:

$ docker volume ls
DRIVER                          VOLUME NAME
rexray/scaleio:0.7.0            test-vol-1

Inspect a volume

The following example illustrates inspecting a volume created using the ScaleIO plug-in:

$ docker volume inspect test-vol-1
[
    {
        "Driver": "rexray/scaleio:0.7.0-20",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/plug-ins/9f30ec546a4b1bb19574e491ef3e936c2583eda6be374682eb42d21bbeec0dd8/rootfs",
        "Name": "test-vol-1",
        "Options": {},
        "Scope": "global",
        "Status": {
            "availabilityZone": "default",
            "fields": null,
            "iops": 0,
            "name": "test-vol-1",
            "server": "scaleio",
            "service": "scaleio",
            "size": 16,
            "type": "default"
        }
    }
]

Use a volume

The following example illustrates using a volume created using the ScaleIO plug-in:

$ docker run -v test-vol-1:/data busybox mount | grep "/data"
/dev/scinia on /data type xfs (rw,seclabel,relatime,nouuid,attr2,inode64,noquota)

Remove a volume

The following example illustrates removing a volume created using the ScaleIO plug-in:

$ docker volume rm test-vol-1

Validate the volume was deleted successfully by listing the volumes:

$ docker volume ls
DRIVER              VOLUME NAME

Google

REX-Ray ships with plug-ins for Google Compute Engine (GCE) as well.

GCE Persistent Disk

Microsoft

Microsoft Azure plug-ins are included with REX-Ray as well.

Azure Unmanaged Disk