Hopefully you had the opportunity to read my previous article on Monolith vs Microservices Architecture. The intent is to keep the articles simple to help you all understand the basics and ignite the necessary interest to get you looking for advanced topics in this space.
In last few years, containers have dramatically changed the way software applications are built, shipped and maintained.
However, the concept of containers has been around for decades based in the resource partitioning technology of the sixties (1960).
In the past we had a physical server (hardware) with Operating Systems on it and the application server was installed on it. It let to evolution of Virtualization when we realized the resources of the physical servers were never utilized well enough. The Hypervisor allowed us to host multiple guest Operating Systems called virtual machines which could individually leverage the physical resources of the server (hardware) and allow us to host multiple application servers on the same physical server. Few popular hypervisors are hyperV (Microsoft), ESX (VMware) and KVM (Linux).
In virtualization there were multiple Operating systems with device drivers in every instance, this lead to evolution of container to better the utilization of the Kernel resources. Here the container Engine allows multiple applications to be hosted in its own container space where the Kernel resources of the same underlying Operating System are utilized. This also gave the added benefit of portability.
LXC, the building block that sparked the development of containerization technologies, was added to the Linux kernel in 2008. LXC combined the use of kernel cgroups, which allow groups to be separated so that they cannot “see” each other, to implement lightweight process isolation.
Recently, Docker has evolved into a powerful way of simplifying the tooling required to create and manage containers. It basically uses LXC as its default execution driver.
With windows following the suit and all the cloud providers like AWS, AZURE and GCP offering the service, the adoption has been explosive.
With Docker, containers have become accessible to novice developers and systems administrators, as it uses simple processes and standard interfaces.
If this article was able to give you some basic knowledge on containers, I am sure your next reading should be on docker. The technologies associated with containers seem to be facilitating the growth and adoption of Microservices and DevOps.