Docker announced today it will integrate an “unmodified” version of Google’s Kubernetes container-orchestration tool as a native part of Docker. Docker said the Kubernetes integration will be available as a beta release, but gave no release date.
This integration will be extended to all versions of Docker—the for-pay Enterprise Edition, and the desktop incarnations, Docker for Mac and Docker for Windows, which use the free Community Edition. Both enterprise and desktop versions will have Kubernetes support for all the operating systems they currently support.
Why Docker is adding Kubernetes
One reason Docker is including Kubernetes is to spare developers the effort of standing up a Kubernetes instance, whether for simple dev/test or for actual production use. Historically it’s been a chore to get Kubernetes running, and so a slew of Kubernetes tools and third-party Kubernetes projects have emerged to simplify the process. Most of the time, it’s easier to use a Kubernetes distribution, becayse the distribution’s packaging deals with these problems at a high level.
Docker’s inclusion of Kubernetes makes Docker itself a Kubernetes distribution.To integrate the two, Docker is using a Kubernetes feature called custom resources, a native way to customize particular installations of Kubernetes.
Previous repackagings of Kubernetes sometimes made changes that subtly broke compatibility, and custom resources was devised as a way to avoid that. Any changes Docker makes to Kubernetes can be kept separate from the Kubernetes code base, and done entirely on the Docker side.
How Kubernetes does (and doesn’t) replace Docker Swarm
Another reason Docker is integrating Kubernetes is to provide an easy alternative to its own orchestration tool, Swarm. Swarm appealed to some developers because it provided a stripped-down way to perform container orchestration without Kubernetes’s conceptual and practical overhead.
But as Kubernetes has become more popular and well-understood, and as it’s gained more sophisticated features and tools (like Helm, the Kubernetes application package manager), more people have elected to use Kubernetes first. Kubernetes has also become the go-to orchestrator for production loads.
Swarm isn’t being phased out; it will be provided along with Kubernetes. Any functionality that was supported natively with Swarm, like Docker’s app life cycle features, will also be supported with Kubernetes.