A big day for containers is upon us!  In the past several months, some very exciting things have been brewing in SF at Docker HQ.  With a lot of work by the community and Docker team, there is now the ability with Docker 1.8 (target release 8/10) for the storage partner eco-system to integrate their Storage Platforms with Docker.  Great news, EMC is here day one!  So how did we get here?

In the past couple of releases, Docker has made some significant progress in enabling use cases in containers that focus on persistent data.  This has been done partly through new functionality introduced as Volume plugins.  We first discussed it here, where at Dockercon it was announced that plugins were enabled in the 1.7+ Experimental builds.

Before continuing it is important to differentiate between a couple of aspects of Docker storage functionality.  First there is the primary design pattern and focus of Docker previously which was the non-persistent use of Graph Drivers (–storage-driver) which Jérôme Petazzoni here. This involves Docker being able to use drivers based on Kernel FS modules that enable use of layered Docker images to create a Read/Write Union File System that serves as primary storage for a container.  The persistent part of the design pattern for containers typically comes from using Volumes that are first attached to a Linux OS and then to a specific Container.  This can be done via any number of ways, ie. Kernel storage modules, SCSI, NFS, etc.

As a brief review, Volume plugin functionality means that Docker can now request that Volumes be created, removed, mounted and unmounted to the local Linux OS.   With this, it means the Docker Engine and its API enables and is responsible for requesting that specific volumes be made available for use with Containers.  This also enables schedulers and other things that work with the Docker API to take advantage of the functionality.

At EMC {code} we are very proud to be able to also announce the we support the Volume Plugin API in Docker 1.8 with our REX-Ray project.  The latest binary of REX-Ray can be downloaded from the latest releases here.  This project currently enables some very cool functionality.  As a CLI, REX-Ray enables some advanced storage functionality (create, map, snapshot, create from snapshot) across some common storage/virtualization/cloud platforms (EC2, OpenStack, ScaleIO, XtremIO).  And further, as an officially listed Volume Plugin and in daemon mode, it enables Docker to take advantage of some key storage capabilities that enable Volume consumption on these platforms.

You can review a demo of this with ScaleIO at this youtube video.  There are also presentations available here, and here which discuss some of the functionality as well.  We also have a Vagrant demo of ScaleIO+REX-Ray+Docker here.  Additionally, if you’re looking for our first post re REX-Ray and Dogged prototypes you can find it here.

So what’s next?  More advanced Volume Management?  Storage Platforms as direct endpoints?