What Is Containerization and Will It Spell the End for Virtualization?
Containerization is often thought of as ''next-generation virtualization.'' Learn its fundamentals and how it differs from related technologies.
Join the DZone community and get the full member experience.Join For Free
Containerization is commonly thought of as the 'virtualization of virtualization' or 'next-generation virtualization.' However, containerization existed long before virtualization or the advent of modern technology like Docker and Linux Containers. Similar tech was built into the mainframe systems that pervaded IT throughout the preceding decades.
However, the biggest implication, as the name suggests, is that modern software containerization could have the same seismic impact on the IT industry as shipping containers had on maritime freight transport. Indeed, many major online companies are now running their entire infrastructure on containers.
The reason behind the analogy, which is alluded to in Docker 's logo, is that in the same way shipping containers allowed different products to be kept together when transported, software containers enable all the different elements of an application to be bundled together and moved from one machine to another with comparative ease. Essentially, they become lightweight and portable.
Containerization enables you to run an application in a virtual environment by storing all the files, libraries etc. together as one package: a container. The container can plug directly into the operating system kernel and does not require you to create a new virtual machine every time you want a new instance of the application or to run any other application that uses the same O/S. Keeping the entire application together means different services can efficiently share the operating system kernel.
Containerization's rise to prominence is largely attributable to the development of the open source software Docker. While other container technologies were available before, Docker has brought separate workflows for Linux, Unix and Windows. The Docker engine, for example, bundles an application in isolation, enabling it to be easily moved to any machine or operating system as required.
How Is It Different From Virtual Machines?
In contrast to containerization, a virtual machine requires you to run both a hypervisor and a guest operating system, so every time you wish to fire up your application you are required to install a new operating system. This can create a number of challenges in terms of:
- Portability: it becomes difficult to move the application to another virtual machine
- Speed: accessibility and setup times can be significant
- Resources: virtual machines take up much more space than containers
By enveloping the entire application in its own operating system, a virtual machine brings a lot more overhead than a container; it is possible to support many more containers than virtual machines on the same level of infrastructure.
Tech sprawl also becomes an issue for virtual machines because if the O/S is modified or updated in one place, it will also need to be manually updated everywhere else. Obviously, such a problem does not exist in containerization, which again saves time and money.
Is This the End of Virtualization?
No. Virtual machines are heavily integrated into the landscape of many major enterprises and the idea of just dumping existing applications into a container is impractical. The architecture needs to be redesigned or containerization simply won't work.
There are also several advantages to virtual machines, and these go beyond the necessary support of legacy applications. Large-scale organizations are extremely heterogeneous, suffering from a sprawl of technology across a number of different operating systems with different modifications. While newer companies were able to use containerization to prevent the problems caused by having a multitude of operating systems, for larger established enterprises this privilege did not exist. In these cases, virtual machines, specifically the hypervisor, provide effective partitioning of the different operating systems on the server. Furthermore, virtual machines still have a role in enabling large-scale data center infrastructure, as they encapsulate bare metal servers.
Ultimately, the benefits containerization offers in speed, portability and flexibility will see to a reduction in the prominence of virtual machines. However, virtual machines will still have a role in the future of IT, especially within large or technically diverse organizations.
Published at DZone with permission of , DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.