Kubernetes is loosely coupled and extensible to meet different workloads. Here's how people define Kubernetes on Wikipedia: Kubernetes defines a set of building blocks ("primitives"), which collectively provide mechanisms that deploy, maintain and scale applications based on CPU, memory or custom metrics. There are alternatives to Docker that have similar properties like LC, rkt or containerd. In short, Docker is a platform to run immutable containers encapsulated with close to native performance on a desired machine.
Docker uses the resource isolation features of the Linux kernel (such as cgroups and kernel namespaces) and a union-capable file system (such as OverlayFS) to allow containers to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines." - Wikipedia This enables applications to run in a variety of locations, such as on-premises, in a public cloud, and/or in a private cloud. Here's how people define Docker on Wikipedia: "Docker can package an application and its dependencies in a virtual container that runs on any Linux server. In this article, you will get an explanation of Docker and Kubernetes, and you will build an example NodeJS web application and deploy it using both technologies. Both let developers to package applications into containers to run them in different environments.Īlthough you can achieve similar things using both, in practice they differ in their usage. Nowadays, two of the essential tools in a developer's toolbox are Docker and Kubernetes.