Overview of containers
Containers provide a way of packaging up an application and its dependencies. This description might feel a bit like a virtual machine (VM), where you have a file system that you can install application binaries in and then run later. When you run a container, however, it feels more like a process, both in the speed with which it starts and the amount of memory it consumes. Under the covers, containers are a set of processes that are isolated through the use of features such as Linux namespaces and control groups (cgroups), to make it seem like those processes are running in their own environment (including with their own file system). Containers share the kernel with the host operating system so are less isolated than VMs, but for many purposes, this isolation is sufficient, and this sharing of host resources enables the low memory consumption and rapid start up time that containers can achieve.
In addition to container execution, Docker also makes it easy...