Containerisation describes the pattern of bundling and running application in containers. Containers are a way to isolate applications running on a host. A container’s image contains all the dependencies required to run the application. A host can run multiple containers in isolation.
Containers differ to virtual machines. Virtual machines use a hypervisor and must also run a guest operating system along with each application.
Containers are lighter and have less footprint than virtual machines as they reuse the host’s kernel. In unix terms, it might be useful to think of containers as a group of processes running in a chroot jail.
Docker is one type of container runtime.
Since containers are isolated, they are a useful sandbox for installing and configuring applications without affecting the host system. Installing packages in a container (e.g. apache2) does not install the package in the host operating system.
Containers can be removed and recreated quickly on the host system.