Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Kubernetes vs. Docker: What Does It Really Mean?

I know that Docker and Kubernetes aren’t direct competitors. Docker is the container platform and containers are coordinated and scheduled by Kubernetes, which is a tool.

What does it really mean and how can I deploy my app on Docker for Azure ?

like image 313
Nedzad G Avatar asked May 15 '18 08:05

Nedzad G


People also ask

What is difference between Kubernetes and Docker?

While Docker is a container runtime, Kubernetes is a platform for running and managing containers from many container runtimes. Kubernetes supports numerous container runtimes including Docker, containerd, CRI-O, and any implementation of the Kubernetes CRI (Container Runtime Interface).

Why do we need Kubernetes instead of Docker?

Kubernetes is open-source orchestration software that provides an API to control how and where those containers will run. It allows you to run your Docker containers and workloads and helps you to tackle some of the operating complexities when moving to scale multiple containers, deployed across multiple servers.

What is Kubernetes and Docker for dummies?

Docker is a company which provides a set of tools for building and sharing container images, and running containers at both small and large scale. Kubernetes is a tool which manages (“orchestrates”) container-based applications running on a cluster of servers.

What is Kubernetes using instead of Docker?

Kubernetes is removing support for Docker as a container runtime. Kubernetes does not actually handle the process of running containers on a machine. Instead, it relies on another piece of software called a container runtime.


1 Answers

Short answer:

  • Docker (and containers in general) solve the problem of packaging an application and its dependencies. This makes it easy to ship and run everywhere.

  • Kubernetes is one layer of abstraction above containers. It is a distributed system that controls/manages containers.

My advice: because the landscape is huge... start learning and putting the pieces of the puzzle together by following a course. Below I have added some information from the:

  • Introduction to Kubernetes, free online course from The Linux Foundation.

Why do we need Kubernetes (and other orchestrators) above containers?

In the quality assurance (QA) environments, we can get away with running containers on a single host to develop and test applications. However, when we go to production, we do not have the same liberty, as we need to ensure that our applications:

  • Are fault-tolerant
  • Can scale, and do this on-demand
  • Use resources optimally
  • Can discover other applications automatically, and communicate with each other
  • Are accessible from the external world
  • Can update/rollback without any downtime.

Container orchestrators are the tools which group hosts together to form a cluster, and help us fulfill the requirements mentioned above.


Nowadays, there are many container orchestrators available, such as:

  • Docker Swarm: Docker Swarm is a container orchestrator provided by Docker, Inc. It is part of Docker Engine.
  • Kubernetes: Kubernetes was started by Google, but now, it is a part of the Cloud Native Computing Foundation project.
  • Mesos Marathon: Marathon is one of the frameworks to run containers at scale on Apache Mesos.
  • Amazon ECS: Amazon EC2 Container Service (ECS) is a hosted service provided by AWS to run Docker containers at scale on its infrastructrue.
  • Hashicorp Nomad: Nomad is the container orchestrator provided by HashiCorp.
like image 111
tgogos Avatar answered Sep 17 '22 22:09

tgogos