Choosing a Container Orchestration Platform with Docker
Docker is the de facto container platform, supporting the microservices architecture for deploying loosely coupled applications. However, Docker supports several container orchestration platforms—which should you choose? Let’s look at some of the main platforms.
Kubernetes is the most popular of the container orchestration platforms. Its main selling point is that it is backed by more than 15 years of use in production.
Kubernetes’s basic unit of a containerized application is a pod whose replication level across a cluster can be configured. Kubernetes service abstraction provides an interface for a client to access a Kubernetes pod.
Kubernetes applications may be stateless, which implies that persistent storage is not used, or stateful, if persistent storage is used. Auto-scaling, rolling updates, volumes for storage, and resources allocation are some of its other features.
Docker Swarm is actually a mode in a Docker installation that manages a cluster of Docker Engines. Its main benefit is that it is native or integrated with the Docker Engine.
Docker Swarm provides some of the same benefits as Kubernetes, such as scalability, high availability, service discovery, load balancing, and rolling updates, but without the advantage of having been tested in production. But because it does have the advantage of being native to a Docker Engine, it does not require additional installation other than switching to Docker Swarm mode.
OpenShift is an open source container application platform that embeds Kubernetes. Its main benefit is that it provides additional DevOps tools for rapid application development, easy deployment, scaling, and management of Kubernetes containerized applications.
While a Kubernetes dashboard could be installed as an add-on, OpenShift comes with a web console for ease of management. OpenShift supports the source-to-image (S2I) toolkit for creating Docker images from source code, with support for several languages, including Node.js, Ruby, Java, and PHP.
Apache Mesos is a cluster management tool that could be used to orchestrate virtual machines (VMs) as well as containers. Both Kubernetes and Mesos support auto-scaling, high availability, service discovery and load balancing, rolling upgrades and rollbacks, logging and monitoring, and volumes for stateful applications.
Being able to support non-containerized workloads is an advantage of Mesos. In fact, a Kubernetes cluster could be run on Mesos. You could choose Mesos for a mixed workload and Kubernetes for a containers-only workload.
Cloud Foundry Container Runtime
Cloud Foundry Container Runtime (CFCR) is an open source platform powered and certified by Kubernetes for instantiating, deploying, and managing highly available Kubernetes clusters. Use CFCR for a finer granularity in management of containers with Kubernetes.
CF BOSH, another open source platform, is used to manage the environment, including release engineering, application lifecycle management, and continuous delivery.
Most cloud service providers provide managed services for container orchestration too, but unlike the other options mentioned here, they are not open source.
After exploring the different open source container orchestration platforms, Kubernetes is the common theme; in fact, some of the other container orchestration platforms, such as OpenShift and CFCR, are Kubernetes-based. Even Docker Enterprise distribution provides Kubernetes as an alternative to the native Docker Swarm.
For most people’s use, Kubernetes is the best option.