A file, say a powerpoint presentation that you’ve created works flawlessly on your computer. The minute you open it elsewhere, glitches appear and your presentation starts looking strange or not function at all. Your nicely designed slide looks unintelligible, simply because the target computer doesn’t have the right font.
In another scenario, the testing environment for an app that’s being developed may use Python 2.7, while Production uses Python 3 and the application may not exactly function the way it was originally planned.
The above 2 examples denote scenarios that prevent software from running reliably when moved from one computing environment to another when the supporting software environment is not identical. These can, in turn, cause big problems, requiring expensive delays and fixes.
Is there a way to abstract away the differences in OS distributions and underlying infrastructure? The answer lies in using Containers.
Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package from one computing environment to another. Containers isolate software from its surroundings, for example, differences between development and staging environments, and help reduce conflicts between teams running different software on the same infrastructure.
Containers are also particularly suited for deploying microservices – large-scale applications that are built from a number of components, which are each separable and distinct applications in themselves. Containers present a consistent software environment right from development to testing to final production & deployment, and you can run containers on physical or virtual machines.
Data containers are a separate technology from virtualization, though they are based on some of the same theories. Let’s look at some differences between Containers and Virtualization.
A notable example of the large-scale adoption of containers in a cloud service is provided by Spotify, a Swedish commercial music, podcast and video service. It recognized the advantages of this technology in late 2013 when it deployed the open-source container-management platform. Docker. Google is another large-scale user of containers, reportedly launching around 2 billion every week.
Containers continue to gain momentum as organizations look for greater efficiencies and lower costs to run distributed applications in their increasingly virtualized datacenters. They are also becoming more common in enterprises, though they still have a way to go before being fully embraced in high-performance computing circles.