Public Repository

Last pushed: 22 days ago
Short Description
Converged storage, as a container
Full Description

StorageOS Node Container

The StorageOS Node container turns your Docker node into a hyper-converged storage platform. Each Docker host that runs the Node container can contribute available local or attached storage into a distributed pool, which is then available to all cluster members via a global namespace.

Volumes are available across the cluster so if a container gets moved to another node it still has access to its data. Data can be protected with synchronous replication. Compression, caching, and QoS are enabled by default, and all volumes are thin-provisioned.

No other hardware or software is required.

Full documentation is available at https://docs.storageos.com. To stay informed about new features and production-ready releases, sign up on our customer portal.

Quick Start

Install the StorageOS command line interface (CLI) following the instructions at https://docs.storageos.com/docs/reference/cli/index.

Provide the host ip address in ADVERTISE_IP and a cluster discovery token with JOIN when you install the container:

$ JOIN=$(storageos cluster create)
$ docker run -d --name storageos \
    -e HOSTNAME \
    -e ADVERTISE_IP=xxx.xxx.xxx.xxx \
    -e JOIN=${JOIN} \
    --net=host \
    --pid=host \
    --privileged \
    --cap-add SYS_ADMIN \
    --device /dev/fuse \
    -v /sys:/sys \
    -v /var/lib/storageos:/var/lib/storageos:rshared \
    -v /run/docker/plugins:/run/docker/plugins \
    storageos/node:1.0.0-rc2 server

Use StorageOS

You can now run containers backed by StorageOS volumes:

sudo docker run -it --rm --volume-driver storageos -v test01:/data alpine sh -c "echo hello > /data/myfile"

Or pre-create and manage StorageOS volumes using the docker volume command:

sudo docker volume create --driver storageos --opt size=20 --opt storageos.com/replicas=2 vol01

Next Steps

To get the most out of StorageOS, try:

  1. Running the CLI to manage volumes, rules, and cluster configuration. See https://docs.storageos.com/docs/reference/cli/
  2. Joining more nodes to the cluster. A quick start guide is available at https://docs.storageos.com/docs/install/docker/
  3. Fail containers to other nodes, or enable replication and fail Docker nodes.

Requirements

Docker Version

The container installation method requires Docker 1.10+. For Docker 1.13+ most users should use the managed plugin install method.

Installation

The node container (or plugin) should be installed on each Docker node where you want to consume StorageOS volumes or to present capacity to other nodes.

Run the StorageOS node container

Enable LIO support following https://docs.storageos.com/docs/reference/os_support.

Provide the host ip address in ADVERTISE_IP and a cluster discovery token with JOIN when you install the container:

$ JOIN=$(storageos cluster create)
$ docker run -d --name storageos \
    -e HOSTNAME \
    -e ADVERTISE_IP=xxx.xxx.xxx.xxx \
    -e JOIN=${JOIN} \
    --net=host \
    --pid=host \
    --privileged \
    --cap-add SYS_ADMIN \
    --device /dev/fuse \
    -v /sys:/sys \
    -v /var/lib/storageos:/var/lib/storageos:rshared \
    -v /run/docker/plugins:/run/docker/plugins \
    storageos/node:1.0.0-rc2 server

Other configuration parameters (see Configuration Reference below) may be set in a similar way.

Configuration Parameters

Although the default settings should work for most environments, a number of settings are configurable:

  • HOSTNAME: Hostname of the Docker node, only if you wish to override it.
  • ADVERTISE_IP: IP address of the Docker node, for incoming connections. Defaults to first non-loopback address.
  • USERNAME: Username to authenticate to the API with. Defaults to storageos.
  • PASSWORD: Password to authenticate to the API with. Defaults to storageos.
  • JOIN: A URI defining the cluster for the node to join. Either in the form of a list of IPs, a cluster token (created through 'storageos cluster create') or both.
  • API_PORT: Port for the API to listen on. Defaults to 5705 (IANA Registered).
  • NATS_PORT: Port for NATS messaging to listen on. Defaults to 4222.
  • NATS_CLUSTER_PORT: Port for the NATS cluster service to listen on. Defaults to 8222.
  • SERF_PORT: Port for the Serf protocol to listen on. Defaults to 13700.
  • DFS_PORT: Port for DirectFS to listen on. Defaults to 17100.
  • KV_ADDR: IP address/port of an external Key/Vaue store. Must be specified with KV_BACKEND=etcd.
  • KV_BACKEND: Type of KV store to use. Defaults to embedded. etcd is supported with KV_ADDR set to an external etcd instance, or boltdb can be used for single node testing.
  • LOG_LEVEL: One of debug, info, warning or error. Defaults to info.
  • LOG_FORMAT: Logging output format, one of text or json. Defaults to json.
  • DISABLE_TELEMETRY: To disable anonymous usage reporting across the cluster, set to true. Defaults to false. To help improve the product, data such as API usage and StorageOS configuration information is collected.
  • DISABLE_ERROR_REPORTING: To disable error reporting across the cluster, set to true. Defaults to false. Errors are reported to help identify and resolve potential issues that may occur.
Docker Pull Command
Owner
storageos