Docker has rapidly become “the new thing” for computing in 2014. Why did that happen so quickly, and how has a Linux application container become so popular? Broadly, I think Docker is a great example of how to build a viral, developer-oriented product.
1. A developer can figure out what Docker does, install it and do something useful with it in 15 minutes. I first heard this “rule” from Marten Mickos when talking about why MySQL was so successful: low friction to try it out, a simple concept, and useful functionality.
2. Docker is a great name and it has a cute logo It resonates with what the product does and is easy to remember. Engineering-oriented founders sometimes seem to think that names and logos don’t matter if the product is good enough, but a great name can turbocharge adoption and build a valuable brand.
3. The Docker product came from a non-threatening source, a small startup (DotCloud) that was able to broadly partner across the whole industry. If the same product had come from an established enterprise technology player, there would have been much more push-back from that player’s competitors, and the market would probably have split into several competing technologies.
The rapid adoption rate took everyone by surprise, and now it’s too late to build a competitor. So everyone is having to cooperate around a single container solution. This is great for the developers and end users, but means that several platform as a service (PaaS) vendors have lost control of their destiny somewhat as Docker did an end-run around their strategy.
Even if you don’t know or care what Docker is, I think it offers a very relevant playbook for how to build a developer-led business model.
Get ubiquity first, become the category leader, then convert that into business value and revenue opportunities later.
That leaves the remaining question of, what does Docker do that is interesting, and who might it compete with? I have four separate answers:
1. Portability: Docker is a portable container that packages any Linux application or service. A package that is created and tested on a developer’s laptop using any language or framework can run unmodified on any public cloud, any private cloud or a bare-metal server. This is a similar benefit to the Java “write once, run anyware” idea but is more robust and is generalized to “build anything once, run anywhere”.
2. Speed: Start-up time for a container is around a second. Public cloud virtual machines (VMs) take from tens of seconds to several minutes because they boot a full operating system every time, and booting a VM on a laptop can take minutes. To counter this advantage, VMware has just announced (but not shipped) a technology called Fargo that clones an existing VM in a second or so.
3. Configuration: The Docker container captures the exact configuration of a version of an application. To upgrade the application in production, the container is usually replaced with a new version, which takes a few seconds. The layers of components that go into the configuration are kept separate and can be inspected and rebuilt easily. This changes configuration management to be largely a build- time activity, so for example a Chef recipe might be used to build a Docker container, but at runtime there is no need to use the Chef services to create many identical copies of a Docker container. Used in this way, Docker removes much of the need to use tools like Cfengine, Puppet, Chef, Ansible or Saltstack.
4. Docker Hub App-store: Docker containers are shared in a public registry at hub.docker.com. This is organized similarly to Github, and already contains tens of thousands of containers. Because containers are very portable, this provides a very useful cross platform “app store” for applications and component micro-services that can be assembled into applications. Other attempts to build “app stores” are tied to a specific platform (e.g. the AWS Marketplace or Ubuntu’s Juju Charms) or tool (e.g. the Chef Supermarket) and it seems likely that Docker Hub will end up as a far bigger source of off-the-shelf software components, and monetization opportunities.
One reason Docker is interesting is that all four answers are each individually useful, but can be used in combination. This causes cross-pollination of ideas and patterns. For example, someone might start using Docker because they like the speed and portability, but find that they end up adopting the configuration and Docker hub patterns as well.
The Docker technology is still fairly new; work is underway to add missing features, and a large ecosystem of related projects and companies is forming around it. There’s a lot of interest in the technology from the VC community, as we try to figure out whom to fund to do what, and how the story will play out in the longer term.
This post originally ran in The New Stack.