From Docker Data Volumes to CoreOS Torus to Gluster on OpenShift, the persistent storage options for containerized infrastructure are finally maturing. Wondering what they look like and which storage solution would work best for you? Keep reading for an overview.
Time was when there was no really good way to store data persistently on containers. That was the result of the architecture of containers themselves. Since most containers are designed to be ephemeral, they don’t lend themselves well to storing data permanently.
Container Storage Options
But times have changed.
While highly elegant solutions to the container storage conundrum remain elusive, container storage options have now matured to the point where it’s possible to identify several distinct approaches, each with its own set of advantages and drawbacks.
Those options include:
- Docker Data Volumes. This was the first big attempt to provide persistent storage for containers. Docker Data Volumes (and variants on the concept such as Flocker and Rancher) work by storing data inside containers. The storage optionally can be mapped to the host system. Data Volumes are good if you want to avoid the overhead of running a separate storage system. The drawback is that your data still lives inside containers, which are not an elegant or super-persistent storage method.
- Torus. CoreOS announced this open source distributed storage system about a month ago. It’s designed specifically to provide storage for container clusters, and to integrate well into the container orchestration stack. But it’s also very new and not yet ready for production.
- Gluster storage on OpenShift. Red Hat announced in late June that persistent storage for containers delivered via Gluster, its scale-out storage system, will be available in OpenShift later this summer. This is probably the most elegant, production-ready storage solution for containers currently on the horizon. The drawback, depending on your preferences, is that you have to use OpenShift and the Red Hat software stack to get it.
- Storage over the network. You can also simply use the network to link your containerized apps to network-based storage systems. This is basically what the Torus and Gluster/OpenShift approaches do, but there’s nothing stopping you from doing it yourself in a more primitive way. In fact, that’s the only way to do it if you want to use a storage system other than Torus or Gluster.
With all of these storage options, the container ecosystem has come far since the days when Docker was still new and persistent storage for containers was not really possible at all.
To be sure, there is still certainly room for improvement on the container-storage front, and it already seems to be on the way as companies such as Red Hat adapt existing enterprise-level storage solutions for containers. But the options currently available are not bad, either.