**EXPERIMENTAL** Contiv Storage: Policy backed Clustered Storage (via Ceph or NFS) for Docker
Go Shell Makefile Other
Clone or download
Latest commit 3865691 Jul 13, 2017
Permalink
Failed to load latest commit information.
Godeps Revert "Merge pull request #452 from erikh/consul" Nov 9, 2016
ansible Merge commit '1fef99159750e182c481876489932447aad625ae' into vendor-a… Sep 7, 2016
api api,config,db,errors: fix misspellings Aug 25, 2016
apiserver apiserver: Remove dead code Aug 25, 2016
bin Vagrantfile,.gitignore,bin: new bin directory mapped to go install pa… Nov 2, 2015
build Auto-remove alpine / test policy upload containers Feb 22, 2017
config Revert "Merge pull request #452 from erikh/consul" Nov 9, 2016
contrib *: s/volmaster/apiserver/g Jun 27, 2016
db Revert "Merge pull request #452 from erikh/consul" Nov 9, 2016
errors Revert "Merge pull request #452 from erikh/consul" Nov 9, 2016
info *: Move from rewriting the logrus package to `log` and just use logru… Aug 16, 2016
lock lock/client/client.go: remove deprecated api client Aug 25, 2016
merge merge: reduce cyclomatic complexity in merge code Aug 18, 2016
storage *: fix assignments to make the new version of ineffassign happy Sep 2, 2016
systemtests Revert "Merge pull request #452 from erikh/consul" Nov 9, 2016
vendor Revert "Merge pull request #452 from erikh/consul" Nov 9, 2016
volcli volcli/volcli.go: adjust snapshot copy command to return the new volu… Aug 16, 2016
volmigrate Merge pull request #416 from erikh/logrus Aug 16, 2016
volplugin volplugin,systemtests: make socket (aka plugin) name variable. Aug 19, 2016
volsupervisor lock,volsupervisor: Some fixups provided via review. Aug 24, 2016
watch *: fix assignments to make the new version of ineffassign happy Sep 2, 2016
.dockerignore Update .dockerignore to contain similar contents to .gitignore. Jul 14, 2016
.gitignore Vagrantfile: randomize the third octet of the subnet to allow for up … Jul 1, 2016
CONTRIBUTING.md *: s/volmaster/apiserver/g Jun 27, 2016
Dockerfile Dockerfile,Dockerfile.autorun,build: fixup release materials for v0.3… Aug 21, 2016
Dockerfile.autorun Dockerfile,Dockerfile.autorun,build: fixup release materials for v0.3… Aug 21, 2016
LICENSE LICENSE: update copyright years to cover 2015-2016 May 6, 2016
Makefile Revert "Merge pull request #452 from erikh/consul" Nov 9, 2016
README.md Update README.md Jul 12, 2017
Vagrantfile Revert "Merge pull request #452 from erikh/consul" Nov 9, 2016
vagrant_variables.yml vagrant_variables.yml: Upgrade contiv/centos72 version Aug 25, 2016

README.md

Build-Status ReportCard

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 copy and 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.

volplugin currently only supports Docker volume plugins. First class scheduler support for: Kubernetes and Mesos will be available before the first stable release.

  • 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 slave instead.

Development Instructions

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 want a 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 (make unit-test) live throughout the codebase as *_test files. The system tests / integration tests (make system-test) live in the systemtests directory. Note that make system-test will not successfully run on OSX due to dependencies on unavailable libraries.