Today we announced the release of our Docker Volume Plugin. As a result, Docker users can seamlessly provision persistent volumes on the Hedvig Distributed Storage Platform. Specifically, we’ve demonstrated that this plugin enables users to provision Hedvig storage directly from Docker Universal Control Plane, which is the management interface for Docker Datacenter.
Today’s announcement is a critical element for enterprises looking to use Docker containers in production environments. One of the most common enterprise requirements is to run databases as stateful microservices in containers. However, containers are ephemeral in nature and not designed to run stateful apps -- at least not without integration with shared storage. We know customers are demanding pre-integrated, end-to-end Docker solutions and that’s what we can do now.
This blog is designed to help you understand what this all means and how it works at a high-level.
What is Docker Datacenter?
To-date, Docker’s momentum has been in cloud native environments where a do-it-yourself approach is more prevalent. To help containers penetrate the enterprise and truly go mainstream, Docker bundled many of its existing components so that enterprises can more easily run and manage Docker in a typical enterprise datacenter. Docker Datacenter is rounded out with support subscriptions.
Put succinctly, Docker Datacenter is described as: “an integrated solution including open source and commercial software, the integrations between them, full Docker API support, validated configurations and commercial support for your Docker Datacenter environment.”
The primary components of Docker Datacenter include:
- Support for the Docker API along with Engine and Swarm embedded
- Security with Docker Content Trust (image signing and verification) for
- Docker Trusted Registry (stores and manages images).
- Container management with Docker Universal Control Plane (the Docker web UI).
- Integrations into additional Docker ecosystem tools like Client and Compose.
- Partner integrations including plugins. The Docker Volume Plugin is what Hedvig leverages.
Where does Hedvig fit in Docker Datacenter?The Docker Volume Plugin we’ve created enables a Docker host to access Hedvig as it’s underlying storage. By default, a Docker host can only access local storage. With a Docker Volume Plugin, the containers on a host now have the ability to read and write from shared storage. This particular capability is not unique; any vendor that supplies a Docker Volume Plugin can do this. However, we do this using NFS, which is very unique to Hedvig.
Other storage solutions use iSCSI, which we support via our partnership with ClusterHQ and development of the Hedvig Flocker Driver). However, iSCSI doesn’t support the ability to move containers among hosts without a product like Flocker in between. We’ve implemented container volumes with NFS, which allows us to mount the same volume on different hosts. Hedvig has unique capabilities on the backend of the cluster to ensure this scales across a multi-reader environment. Moreover, the Hedvig Storage Proxy architecture enables us to optimize NFS traffic so you get none of the performance downside, but with all of the multi-host, multi-tenant upside. Hedvig is actually protocol agnostic, so there is no performance difference between iSCSI and NFS. It's a customer deployment preference.
Hedvig works with the orchestration layer (Swarm in the case of Docker Datacenter) to move, spin down, and spin up containers with the ability for that container to access its volume from any host in the cluster.
How does the Hedvig Docker Datacenter solution work?
Anyone familiar with Docker’s UI (or even similar UIs like VMware vCenter and OpenStack Horizon) will be able to instantly provision Hedvig volumes.
To do so is a simple four-step process:
- Click “Create Volume.” This opens a dialog box inside of Docker UCP.
- Name the volume. Pretty straightforward.
- Select Hedvig as your Driver. This invokes the Hedvig Docker Volume Plugin.
- Enter volume options as a comma-separated list. In our case, this enables you to set unique attributes for each container volume. Supported options include: volume size (e.g. size=10gb), replication factor (e.g. rf=3), inline deduplication (e.g. dedupenable=true), inline compression (e.g. compression=true), and client-side caching for read acceleration (e.g. cacheenable=true)
To see the solution in action, here’s a 5-minute demo showing a MongoDB database accessing a dataset stored on Hedvig volumes. In this demo, we show that the container can be destroyed, a new one spun up, and then reconnected to the same volume for dataset persistence.
How do I get started with the Hedvig Docker Datacenter solution?
Assuming you already have Docker Datacenter up and running, then to get started customers just need to download the Hedvig Docker Volume Plugin from GitHub.
The Hedvig Docker Volume Plugin must then be distributed to each host that will need access to Hedvig storage, which can be easily accomplished from Docker command line.
From there you can now use Hedvig for all of your Docker container storage needs.
If you’d like to learn more, check out our Docker resources page for product material, solution briefs, reference architectures, demos, and webinars.