We are pleased to announce the availability of our open-source NetApp Docker Volume Plugin, the nDVP, on the NetApp GitHub site.

Over the last two and a half years containers have emerged as the mechanism of choice for deploying modern applications which adopt the 12 factor philosophy, largely due to the simplicity which Docker brought to the technology. Sometimes this means new applications which have been designed from day one to accommodate the creation and utilization of microservices, and just as often this means existing applications which are being retrofitted, and sometimes shoehorned, into the paradigm. However, one thing hasn’t changed since the very first applications were created: data is, and always will be, a requirement.

Containers Aren’t New Technology, but They Are Evolving

The modern implementation started with Google adding namespaces and cgroups to the Linux kernel in the 2006 timeframe. Prior to that they existed in various permutations as Solaris Zones, BSD jails, and other similar technologies which provided lightweight isolation, not virtualization, of processes. Historically, storage was managed at the host level and was assigned to the container during instantiation, but now this is changing thanks to Docker.

Docker, starting with version 1.8, introduced the concept of volume plugins. This allowed third parties to integrate their technology at a basic level. However, management of the volumes was still cumbersome because volume provisioning was often a necessary step in container instantiation.

Docker 1.9 introduced the current volume management paradigm; decoupling the volume from container management. From their inception, container volumes enable persistence beyond the lifetime of a single container, but now they make managing storage easier by simplifying the interaction through the docker volume set of commands. This makes it trivial to consume storage from containerized applications. ClusterHQ’s Flocker, Rancher’s Convoy, EMC’s REX-Ray, libopenstorage, and many others have created plugins to expose their functionality into the Docker ecosystem; allowing for the simple consumption of enterprise storage for application data.

Bringing Multiprotocol Persistent Storage to Docker

The NetApp BARNACLE team drives our technical approach for the container ecosystem. We have used a two pronged strategy to address containers at NetApp: internally, where we educate everyone from field teams to engineering teams to executives about the capabilities and the promise of containers, and externally, where we work with Docker and other ecosystem partners to help our joint customers excel. Today, we are extremely proud to announce the NetApp Docker Volume Plugin, the culmination of a lot of hard work by our team and support from across NetApp and the first phase of our integration with the container ecosystem.


The NetApp Docker Volume Plugin (nDVP), with initial support for Data ONTAP, has the standard features expected of a volume plugin: create, delete, and mount of persistent volumes, as well as support for Docker's volume commands. It can already do some more advanced things as well, and we're excited to see what you do with it, such as:

Support for both iSCSI and NFS
You can choose the protocol which best meets your application's needs.

# the driver name, specified during setup, determines which
# configuration to use

# create a volume using NFS
docker volume create -d netapp-nfs --name myNfsVol

# create a volume using iSCSI
docker volume create -d netapp-iscsi --name myIscsiVol

Manage and consume volumes from any Docker host
Volumes created on one server are available on any other Docker host running the nDVP, without having to install a centralized management service.

Consume existing storage
Existing storage objects, such as volumes and LUNs, can be easily consumed by the nDVP.

Differentiate storage offerings with multiple instances
The nDVP is not limited to a single instance per server. Multiple configuration files can be used to differentiate the storage offerings available. For instance, by customizing the desired aggregate for Data ONTAP in the config file, the consumer is able to select storage with different capabilities: all-flash, hybrid, capacity, etc. with no additional effort.

# sample Docker volume creation using volume properties
docker volume create --driver netapp-nfs --name myNfsVol \
  --size 10g \ # create a 10GB volume
  --snapshotPolicy hourly \ # take and keep 6 hourly snaps
  --snapshotDir true # make the .snapshot directory visible

Referring to the code example above, you’ll note some other properties which can be customized if desired. The most important of these is, arguably, the snapshot policy. Data ONTAP snapshots are the cornerstone of a data recoverability plan. Empowering the choice of recovery point objective by choosing the snapshot schedule means that application administrators and developers can protect their data according to their needs, all without intervention from the storage administrator. If the snapshot directory is made visible (enabled by default, but customizable) for NFS storage, then those same application administrators can perform their own recovery operations.

Finally, we have a robust driver paradigm built into the plugin which enables the quick addition of support for additional storage backends. We expect to quickly add support for SolidFire and E-Series platforms, further enabling the application administrator/developer to choose the right capability for their needs.

Extending the Data Fabric

The NetApp Data Fabric is the concept of making your data available where you need it, when you need it. Data is the most critical asset of any business, but it has mass, which makes it difficult to have the data move at will. A Data Fabric abstracts the complexity behind this, and enables data to move to where it needs to be with little effort. As the NetApp integration with containers and the Docker ecosystem matures we will show how you can capitalize on the features provided by the NetApp storage portfolio and the Data Fabric to fully embrace containers for your applications.

If you’re interested in the NetApp Docker Volume Plugin, it is available from our GitHub site. Full details on how to deploy and configure the plugin are available in the documentation. If you have questions or issues, please open an issue or send us an email (opensource@netapp.com).

Members of the NetApp containers team will be at OpenStack Summit Austin April 25-28, we would love to have you stop by the booth to discuss Docker, containers, microservices, or anything else that is on your mind. We are also a Gold Sponsor for DockerCon US 2016, where the whole team will be available! If you have questions about persistence with your application, we would love to hear from you!

About Andrew Sullivan

Andrew has worked in the information technology industry for over 10 years, with a rich history of database development, DevOps experience, and virtualization. He is currently focused on storage and virtualization automation, and driving simplicity into everyday workflows.

Pin It on Pinterest