Docker is a platform for consistantly building, running, and shipping applications → If it works on my machine, then works on others’ too.
An abstraction of a machine (physical h/w) E.g.) Mac can run Linux and Windows with VM via Hypervisor.
Hypervisor is a s/w that create and manage VMs (e.g. VirtualBox, VMware, Hyper-v (Windows only))
What are problems w/ VM?
An isolated environment for running an application → Allow us run different s/w versions and env on one single machine.
Why better than VM?
Docker uses client-server(Docker engine) architecture w/ RESTful API. Container act like process. Every containers share kernel of the host.
Kernel is a core of the OS: it manages applications and h/w resources such as RAM and CPU.
Every OS has its own kernels.
Linux machine can only run Linux container
Windows machine: Windows / Linux
Mac machine: Linux VM