Unless you live under a rock, you know that Docker’s valuation is over $1B and the Docker brand is one of the most talked about brands in all of technology. Docker is known as the de facto standard for container runtime, but Google’s Kubernetes is winning the battle for orchestration engines. The question I often get is, “will the adoption of Kubernetes hurt Docker?”
Many people believe that the money in containers is in the orchestration layer. This is why they see Kubernetes as a direct threat to Docker. I disagree with this viewpoint. Docker is not a container company. Docker is a platform company. To understand that concept, one must understand the history of Docker.
PaaS vs CaaS
The Docker company used to be a public PaaS (Platform as a Service) company named dotCloud. All PaaS solutions leverage containers under the covers to enable them to perform complex tasks, such as live migrations so they can deploy software without asking customers to get off the system or take any downtime. Four years ago, dotCloud open sourced its underlying container technology known as the Docker Project. Almost instantly, a large community spawned and dotCloud pivoted from a pure play PaaS company to a container company named Docker.
Over the next two years, Docker raised $190M and introduced the concept of containers as a service (CaaS). CTO Solomon Hykes understood from his PaaS experience that one of the biggest challenges to PaaS adoption was that it was often too prescriptive for developers. The philosophy behind CaaS is that customers could containerize the technology components that were relevant to them and with the help of Docker products and services, could assemble a non-prescriptive platform made up of containerized components. This is the best of both worlds. Developers are abstracted from the underlying IT plumbing and they are not forced into the technology choices and methods of a PaaS vendor. The shift to CaaS made Docker a Platform company instead of a container company. Containers are simply a means to an end.
Once customers embrace the concepts of containers, they need a solution to schedule and manage containers. Orchestration tools are that solution. The most common orchestration tools are Kubernetes, Mesos and Docker Swarm. Kubernetes is by far the most mature and scalable solution in the marketplace and has the lion’s share of the market. All three of these orchestration tools are open source and customers only pay for support if they want it.
Comparing Kubernetes to Docker is not an apples to apples comparison. You can’t compare an orchestration tool to a platform. Comparing Kubernetes to Docker Swarm makes perfect sense. Kubernetes is the underlying technology that Google has been using for years, even though it was released to the public two years ago. It is used in numerous large scale global deployments. Docker Swarm is in its infancy and just announced orchestration functionality last June at DockerCon 2016. Kubernetes is light-years ahead of Swarm. One of the advantages of Swarm is the integration with numerous security features in the Docker platform, such as key management. Many customers who don’t have the large scale requirements prefer to stick with Swarm because of the smoother integration with the Docker platform.
Where is the value in the container space?
The clear winner to date in the orchestration space is Kubernetes. This has led many to assume that Kubernetes is an ominous threat to Docker. At DockerCon 2017 in Austin last week, Docker released Project Moby which is a container framework for assembling container based platforms (CaaS). The Moby Project enables customers to plug and play their favorite technology components to create their own custom platform. Orchestration is simply one layer of the platform.
Docker does not care which orchestration tool their customers choose. Their job is to make it easy for their customers to plug in their favorite orchestration tool, whether that’s Swarm or something else. In reality, Docker is commoditizing orchestration engines. The choice is irrelevant as far as value. The true value is in the platform and that is where the money is. With that said, it makes no sense to compare Kubernetes to Docker. Docker really competes against platforms like VMWare, CloudFoundry and others.
I don’t believe that Docker and Google are foes. There definitely was contention between the two companies in the past. Many of us saw the Twitter spat between Google’s container guru Kelsey Hightower and Docker’s Solomon Hykes last year. I believe Kelsey’s constructive criticism about what he perceived as Docker’s lack of openness helped drive Docker’s product decision to embrace Kubernetes as a viable option in the orchestration layer of the Docker platform. And by doing so, Google becomes less of a foe and more of a partner in the container ecosystem.
Docker makes its money in support services. The more Docker engines running in production, the more revenue they make in support. If Kubernetes is the clear favorite orchestration engine and is being used to drive large scale container based applications, then Kubernetes is enabling Docker to get more Docker engines into production.
In my opinion, Kubernetes is not the Docker killer. Kubernetes is an enabler for Docker. To take this one step further, orchestration tools are simply a commodity to the Docker platform. All orchestration engines drive container consumption. All that matters to Docker is that container adoption increases. Orchestration engines are a key component of the Docker platform which makes them a friend, not a foe.