Containers are the evolution of virtualization. With virtualization, the resources of physical machines are shared among several virtual machines. Sharing those resources also means that all virtual machines have their own operating system. This is different when using containers. With containers, not only are the resources shared, but also the operating system kernel, making it very small in comparison with a virtual machine image.
Since the operating system kernel is shared, containers are also very portable. Images can be deployed on any type of host environment that supports running containers. This works because all the application's binaries and configurations are stored inside the container. As a result, environment variables outside the container do not impact the application. Naturally, there are a number of caveats, however: a container...