volplugin: cluster-wide volume management for container ecosystems
Note: Most of this documentation is about the open source project. If you came to try Contiv, read our documentation.
volplugin controls Ceph RBD or NFS devices, in a way that makes them easy to use for devs with docker, and flexible to configure for ops. Reference your volumes with docker from anywhere your storage is available, and they are located and mounted. Works great with Compose and Swarm, now Mesos too!
Our profiles system makes instantiating lots of similar class volumes a snap, allowing for a variety of use cases:
- Give your dev teams full-stack dev environments (complete with state) that arrive on demand. They can configure them.
- Scale your stateful containers in a snap with our snapshot facilities, just
volcli volume snapshot copyand refer to the volume immediately. Anywhere. (Ceph only)
- Container crashed? Host died? volplugin's got you. Just re-init your container on another host with the same volume name.
- On-the-fly image creation and (re)mount from any Ceph source, by referencing a policy and volume name.
- Manage many kinds of filesystems, including providing mkfs commands.
- Snapshot frequency and pruning. Also copy snapshots to new volumes!
- Ephemeral (removed on container teardown) volumes
- BPS limiting (via blkio cgroup)
volplugin is still alpha at the time of this writing; features and the API may be extremely volatile and it is not suggested that you use this in production.
Try it out
This will start the suite of volplugin tools in containers from the
contiv/volplugin image. It will do the work of configuring docker for you. Note that you must have
a working ceph environment that volplugin can already use.
$ docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock contiv/volplugin-autorun
If you get an error like "mountpoint / is not a shared mount", set
MountFlags=shared in your systemd unit file for docker. It will most likely
be set to
Our Getting Started instructions should be the first thing you read. The prerequisites are absolutely necessary.
Please see our CONTRIBUTING document as well.
Please read the
Makefile for most targets. If you
make build you will get
apiserver/volplugin/volcli installed on the guests, so
make run-build if you
go install'd version of these programs on your host.
apiserver/volplugin do not run on anything but linux (you can use volcli,
however, on other platforms).
make start will start the development environment.
make stop stops, and
make restart rebuilds it.
If you wish to run the tests,
make test. The unit tests (
live throughout the codebase as
*_test files. The system tests / integration
make system-test) live in the
systemtests directory. Note that
will not successfully run on OSX due to dependencies on unavailable libraries.