Hypervisor means supervisor of supervisor – a strong supervisor. It is hardware or software, which allows to create and control one or more virtual systems. Hypervisor are also known as Virtual Machine Monitor(VMM).
A computer, on which Hypervisor runs, is called as “Host Machine”. The operating system is referred as “Host OS”. Hypervisor allows to create one or more virtual systems on top of Host Machine’s hardware. Each virtual system may have different operating system. Such operating system is referred as “Guest OS”.
The need to use hardware more efficiently gave rise to the Hypervisors. They emulate the underlying hardware for the virtual machines as per the configuration.
It is easy to confuse VMs with Containers, however, there is clear differentiation between these two entities. VMs bundle operating systems within them whereas Containers do not.
Types of Hypervisor
Bare-Metal – This layer is installed directly at hardware level and doesn’t have any Host OS at all. It directly allows to install guest operating systems. These type of Hypervisors obviously give speed and efficiency as they work directly off the hardware. They give deterministic response times, smaller memory footprint and fine grained control.
Hosted – These reside on top of host operating system. These are preferred where speed has lesser consideration, but manageability requirement is higher. Additionally, these are available on a wider range of underlying hardware and are easier to setup and install.
Virtualization is a technique of dividing resources of a computer into multiple execution environments. Virtualization can happen at hardware level or at OS Level. Containers are the latest trend in this space. Although the concept is very old, since unix days, this type of virtualization has picked momentum since Docker Inc introduced their technology.
What Are Containers?
Containers provide an isolated space to run a specific application or a set of applications utilizing the underlying Host OS through OS level virtualization. OS Level virtualization allows to run multiple applications “contained” in an isolated space and hence the name. Isolation also provides security. It would be easy to confuse them with VM (virtual machines).
VMs host their own OS within themselves (Guest OS). They run on top of another OS (known as Host OS) and provide abstraction at hardware level. This guest OS could be different from host OS. They need to bundle all the dependent libraries and applications within and hence turnout to be bulky.
Containers use underlying host OS through OS level virtualization. All the containers running on a given machine need to use the same OS as that of host OS. They can share the libraries with underlying OS and hence turn out to be very lightweight.
Docker Inc. is a leading provider for in this space and has been doing that since 2014.
As can be seen easily from above diagram, applications running in VM are very bulky as they need to have OS as well bundled with them. Whereas Containers are lightweight and hence multiple instances could be run on single Host OS.