Sometimes We Talk About Docker, Sometimes Combine Docker With Kubernates, Sometimes We Talk How to Install Meos. It is normal to get confused, specially the students at initial years who are self learning at own effort. Here is Docker Vs Kubernetes Vs Apache Mesos to Clarify devOps. Kubernetes, Docker, and Swarm are practically class of DevOps infrastructure management tools also known as Container Orchestration Engines (COEs). Container Orchestration Engines (COEs) provide an abstraction layer between pools of resources, and the application containers that run on those resources. While all of these three technologies make it possible to use containers to deploy, manage, and scale applications, in reality they each of them solve different things in different contexts.
Docker Vs Kubernetes Vs Apache Mesos
It is not easy to make head to head comparison or rather will be misleading. Let us see one by one each of them.
Docker had a Platform-as-a-Service named dotCloud, which has been closed now. That dotCloud team found the trouble of managing dependencies and binaries across many applications. For that reason they combined some of the capabilities of cgroups and namespaces into a single and easy to use package so that applications can consistently run on any infrastructure. That package is Docker image.
With Docker Image, applications can consistently be deployed across many environments, it provides Git-like semantics (recall commands like
docker commit). Docker images as if like immutable layers, enabling an immutable infrastructure. Committed changes are stored as an individual read-only layers as if like changes in forks, making it easy to re-use images and track changes.
As Docker got popularity and developers started to run them in production. Additional tool was a need to coordinate these containers across multiple machines, which is known as container orchestration.
One of the first container orchestrators which supported Docker images was Marathon on Apache Mesos. Sooner other container orchestration technologies emerged: Nomad, Kubernetes and, Docker Swarm (which is now part of Docker Engine). Docker initially had no profit making concept. Soon they moved to commercialize, so these gradually appeared:
- Docker hub for storage of Docker images
- Docker registry for storing it on-premise
Docker Swarm is Docker’s native Container Orchestration Engine. Swarmkit is the Docker native version of Swarm. Swarm is tightly integrated with the Docker API, making it well-suited for use with Docker. Swarm has a YAML-based deployment model using Docker Compose.
Google soon realized the power of Docker image and started to think for the Google Cloud Platform. Google designed Kubernetes from scratch to orchestrate Docker containers. Kubernetes is a powerful tool for Docker container orchestration without having to interact with the underlying infrastructure, provides standard deployment interface.
The above stories explain why on Docker’s site it is written :
The Docker platform is getting support for Kubernetes. This means that developers and operators can build apps with Docker and seamlessly test and deploy them using both Docker Swarm and Kubernetes.
Kubernetes is a system for managing containerized applications across a cluster of nodes. In many ways, Kubernetes was designed to address the disconnection between the way that modern.
The controlling services in a Kubernetes cluster are called the master, or control plane, components. These operate as the main management contact points for administrators, and also provide many cluster-wide systems for the relatively dumb worker nodes. These services can be installed on a single machine, or distributed across multiple machines. Kubernetes uses etcd to store configuration data that can be used by each of the nodes in the cluster. This can be used for service discovery and represents the state of the cluster that each component can reference to configure or reconfigure themselves. At that time, CoreOS system was on hype and was the environment that Kubernetes is meant to be deployed on. A pod is the basic unit that Kubernetes deals with. Containers themselves are not assigned to hosts. Instead, closely related containers are grouped together in a pod.
Apache Mesos was a UC Berkeley project for next-generation cluster management. Apache Mesos actually roots back to 2009. Container orchestration is one of the example workload which can run on Mesos architecture using a specialized orchestration framework built on top of Mesos called Marathon.
Conclusion on Docker Vs Kubernetes Vs Apache Mesos
Obviously Docker is a constant part to learn. Basically question possibly should go towards Kubernetes Vs Apache Mesos to get some features which Docker still lacks. Mesos is different than any other, it is more of a distributed approach to manage cloud resources. Mesos can have multiple masters which use Zookeeper to keep track of the cluster state amongst the masters and form a high-availability cluster. As Mesosphere DC/OS is closest to Big Data, Data Analytics; that is why Big Data related works with Docker, likely to be using Mesosphere DC/OS.
Possibly it is expected that Apache Mesos will have documentation around Mesos :
Kubernetes is a great to start; it is the quickest, easiest and lightest which offers a very high level of portability. But if you have existing workloads like Hadoop, Spark, Kafka then Mesos will give you a framework that lets you interleave those workloads with each other.