The PivotNine Blog

The Point Of Docker Is More Than Containers

I was a Docker skeptic. The idea of containers was not particularly new (BSD Jails, Solaris zones, etc.) and it didn't seem to be enough to sustain a company or a new way of working.

I've changed my mind.

Spending time with Docker during Cloud Field Day about a month ago opened my eyes to the larger ecosystem that Docker is building, and that others are building around it. There is so much more to Docker than just the idea of immutable containers.

For a start, Docker made using containers easy. That's no small feat for a tricky piece of technical infrastructure. Making it easy, and specifically easy for developers, to use removed a lot of friction that was no small contributor to the pain of other, earlier methods. It gave developers are really simple way to create a fully functional development environment, isolated from all other dependencies, with which to work.

Now you could set up a common target platform for all developers to deploy into, and then containers wouldn't have much appeal. But as anyone who's tried to do that here in the real world, you would know that it's a ghastly nightmare. Trying to get humans to agree on things is tricky at the best of times, but to have all of the developers in your organisation deploy to a single target platform? Good luck with that.

Now change that target platform constantly. There's a reason security patches don't get applied as regularly as they should. Add in the continual flux of Javascript frameworks (what set of UI elements are we using today? Is it sunny? Where's the wind coming from?) and you've set an impossible task for both developers and infrastructure people to attempt.

What Docker did is create an easy to use way to force a common target platform — the Docker engine and related pieces — but to decoupled everything else from what developers wanted to do. It's also modular, so you can mix and match components in the stack as they need to change, and it manages many of the dependencies for you.

It's the forcing function that I've most come to believe in. Humans, myself very much included, are abysmal at self-discipline. We all know documentation should get written, and that we shouldn't have that extra slice of (of so delicious) cake, but do we do what we should? Of course not! There are whole industries that depend on humans continuing to be awful at self-control.

Docker forces you to throw away old code, old dependencies, and deploy on new ones. It hides a lot of the complexity of the underlying infrastructure from developers, and does so in a loosely-coupled way. Developers don't really have to talk to infrastructure people much about what sits underneath the Docker engine, and that's a good thing. It continues our use of ever-higher levels of abstraction in order to make computers useful.

Docker forces you to adopt a newer, flow-oriented business process for deploying software. It's this process that creates the vast magnitude of transformational value. Not the infrastructure, as fancy as flash storage is. Not the software that's built on top of it, though there is plenty of value to be had there as well, don't get me wrong. It's not even the container system itself.

The value of Docker is in the way it forces your business to change the way it uses technology that has me the most excited.

This article first appeared in Forbes.com here.