Docker: A Lightweight Virtualization Solution
Learn about the challenges of consistent application deployment and its solution.
We'll cover the following...
A consistent challenge in developing robust software applications is ensuring that they run the same on a machine different from the one on which they are developed. These differences in environments could encompass a number of variables: operating systems, programming language library versions, and hardware such as CPU models.
Traditionally, one approach to dealing with this heterogeneity has been to use a Virtual Machine (VM). While VMs are useful for running applications on diverse hardware and operating systems, they are also limited by being resource-intensive: each VM running on a host requires the overhead resources to run a completely separate operating system, along with all the applications or dependencies within the guest
However, in some cases, this is an unnecessary level of overhead; we do not necessarily need to run an entirely separate operating system rather than just a consistent environment, including libraries and dependencies within a single operating system. This need for a lightweight framework to specify runtime environments prompted the creation of the Docker project for containerization in 2013. In essence, a container is an environment for running an application, including all dependencies and libraries, allowing reproducible deployment ...