Virtualization
If we look back at the history of computing, the 1970s were dominated by mainframe computing. During the 80s and 90s, personal computing and client-server technology was the flavor. The first decade of this century was characterized by two major trends: virtualization and mobile computing. Today, we are again in midst of trend-changing phenomena with the concept of containerization of applications and services.
To understand Containers better, let's take a step back and understand virtualization. Virtualization was a breakthrough innovation that completely changed the way physical servers were looked at. It refers to the abstraction of a physical object into a logical object. Virtualization of physical servers enabled the creation of multiple virtual servers, better known as virtual machines. These virtual machines consumed and shared the same physical CPU, memory, storage, and other hardware with the physical server on which they were hosted. This enabled faster and easier provisioning of application environments on demand, providing high availability and scalability with reduced cost. One physical server was enough to host multiple virtual machines, each virtual machine containing its own operating system and hosting services on it. There was no longer any need to buy additional physical servers for deploying new applications and services. The existing physical servers were sufficient to host more virtual machines. Furthermore, as part of rationalization, many physical servers were consolidated into a few with the help of virtualization.
Each virtual machine contains the entire operating system and each virtual machine is completely isolated from other virtual machines, including the physical hosts. Although a virtual machine uses the hardware provided by the host physical server, it has full control over its assigned resources and its environment. These virtual machines can be hosted on a network similar to a physical server with its own identity.
One of the drawbacks of virtual machines is that each virtual machine contains the complete operating system. This means that running multiple virtual machines will run multiple operating systems on a physical host. Each operating system consumes a major portion of hardware resources, the same resources that could be utilized by applications and services if they were hosted on a physical server. Another issue with virtual machines is that it still consumes a lot of time to provision them. Although the time required to provision them is less than provisioning a physical server, it is still considerably high in this fast-paced world. Furthermore, the footprint of a virtual machine runs in gigabytes and has the potential to be reduced significantly.