Software Containerization is an alternative to machine virtualization which involves encapsulating an application with its operating environment in a container that could run on any suitable physical machine like computers, virtual machines, bare-metal servers, and cloud clusters, without taking care of the dependencies of that application.
One of the platrforms that gained a lot of attention is Docker. Docker is a lightweight containerizing solution that runs on the same OS kernel. Its standards enable containers to run on all the main Linux distributions and recently on Microsoft Windows. It is secure by default as the containers isolate the applications from one another while providing an additional layer of protection for the application. Docker is currently the world’s leading software containerizing platform.
The major features of Docker are that accelerates developers work where they can take copies of their live environment and run them on any new endpoint running a Docker engine, eliminating environment inconsistencies, and include only the application with its dependencies; sharing the kernel with other containers while virtual machines include the application and all the binaries, libraries, and the entire guest operating system.
Image source: www.docker.com
Docker is not the first software containerizing platform, the foundation for containerization lies in the LinuX Containers (LXC) format, which is a user space interface for the Linux kernel containment features. Other containerizing solutions would be CoreOS rkt, Microsoft Drawbridge, and Ubuntu LXD.