At DockerCon Europe 2017 it was announced that Docker will be integrating Kubernetes into the Docker Platform and Moby Project. The next version of Docker EE (with a beta scheduled before the end of 2017) will allow customers to run Swarm and Kubernetes workloads on the same cluster. There will be also be an "optional" Kubernetes integration into Docker for Mac and Windows as part of the beta program.
The Docker Enterprise Edition (EE), an "enterprise-grade" container platform that offers a centralised control plane and software supply chain management via private registry and additional security features, will soon support the Swarm and Kubernetes orchestrators side-by-side on the same Linux cluster:
Docker EE Orchestration with Swarm and Kubernetes (Image taken from the Docker Blog)
In 2016 Docker added "Swarm Mode" orchestration to its platform, which was powered by the SwarmKit project. A year prior to this the Kubernetes orchestration platform was released at version 1.0. and donated by Google to the Cloud Native Computing Foundation (CNCF) as a seed project. The Docker blog states that Docker received feedback from users for the need to support multiple orchestration technologies:
We've also gotten feedback that some users really like the integrated Docker platform with end-to-end container management, but that they want to use other orchestrators, like Kubernetes, for container scheduling. Either because they've already designed services to work on Kubernetes or because Kubernetes has particular features they're looking for.
Docker also announced that they will also add an "optional Kubernetes" to Docker Community Edition (CE) for Mac and Windows, which will be available in a beta program at the end of 2017 (interested readers can sign up at beta.docker.com).
With the next version of the Docker platform, developers can build and test apps destined for production directly on Kubernetes, on their workstation. And ops can get all the benefits of Docker Enterprise Edition – secure multi-tenancy, image scanning and role-based access control – while running apps in production orchestrated with either Kubernetes or Swarm.
The Docker bog states that although the Kubernetes community has built "solid solutions" for installing Kubernetes development setups on local workstations, including the minikube project, it can be "tricky to configure for tight docker build, run and test iterations". Once Kubernetes support is added to Docker for Mac and Windows, developers will be able to build Docker Compose, Swarm-based applications and Kubernetes applications using the same development system.
Docker is also building Kubernetes components using Custom Resources and the API server aggregation layer, making it simpler to deploy Docker Compose applications as Kubernetes-native Pods and Services. On the Docker Blog Solomon Hykes, founder and CTO of Docker Inc, states that the version of Kubernetes that will be incorporated into Docker will be "the vanilla Kubernetes that everyone is familiar with, direct from the [Cloud Native Computing Foundation] CNCF. It will not be a fork, nor an outdated version, nor wrapped or limited in any way." Although heavy investment into Kubernetes is obviously underway, Hykes was also keen to stress that Docker is still committed to Swarm:
While we're adding Kubernetes as an orchestration option in Docker, we remain committed to Swarm and our customers and users that rely on Swarm and Docker for running critical apps at scale in production.
It is worth noting that in tandem with this effort, the Kubernetes platform has been reducing its coupling to the Docker container runtime, with the introduction of the Container Runtime Interface (CRI) back in December 2016. There are several projects under development (not necessarily ready for production use) that integrate container runtimes into Kubernetes using CRI, for example: cri-o, an Open Containers Initiative (OCI) conformant runtime; rktlet, CoreOS' rkt container runtime; frakti, a hypervisor-based container runtime; and cri-containerd, the containerd implementation that powers Docker.
Through the Moby Project, Docker has been working to adopt and contribute to Kubernetes over the last year. Projects such as the aforementioned containerd and cri-containerd for the container runtime; LinuxKit for building custom secure, portable and lean operating systems to run containers on; InfraKit for creating and managing declarative, self healing infrastructure; libnetwork for overlay networking; and Notary for signing and verifying containers by Docker and other container projects.
Additional information on the announcement of the upcoming Kubernetes integration into Docker EE and CE can be found on the Docker Blog. Readers can sign up for the beta program and beta.docker.com.