Docker – Auto-deploys and runs your application in a container / Kubernetes – Auto-deploys and manages containerized applications across the nodes
Kubernetes is an open-source project that automates the deployment and management of containerized applications across a cluster of nodes. Docker provides an automated way to deploy and run your application in a container. With Docker, you can create a standardized environment for your application and its dependencies, regardless of the type of machine on which your application runs. Kubernetes provides a way to manage general-purpose workloads (for instance, any combination of front-end web servers and back-end databases) in a way that delivers high uptime, low complexity, and fine-grained resource utilization.
1. Virtual machines, which are computers that live inside a host computer, and use their host's resources (memory, hard drives, etc.). They believe they are authentic, standard computers, and behave as such. They have, like all computers, their own operating system, which can be different from the host's (e.g., a Windows virtual machine can be running inside a Mac). They are completely isolated from the host but can be configured to be in the same network and share data that way. The host can turn them on or off, and the virtual machines will think their actual power switch has been pressed.
2. Containers, which are isolated spaces inside a host operating system in a computer. They can have their own software installed, and that software will believe it is interacting with a standard computer, but it will only have access to the devices and contents that the host operating system is sharing with the container. This allows me, for example, to have the Python 2 interpreter installed on my laptop but have the Python 3 interpreter installed in a container and write and execute applications written in Python 3 inside that container.
Docker is a technology for creating and turning on and off individual containers in an operating system, usually with some specific software installed in them (programming language interpreters or compilers, web servers, etc.). Kubernetes is a system for managing groups of containers, created with Docker or other container technologies.