In all seriousness: in the world of IT, what exactly are containers, anyway? For those of you who are not very familiar with where containers come from and why you’re hearing so much about them right now, this post is for you.
You have an operating system (OS).
You have some applications (apps) running on your OS.
In most cases, these are packaged together as a “virtual machine”.
And then, virtualization happens. Hypervisors happen — and you can have multiple copies of a virtual machine running on a hypervisor. In many cases, organizations are running lots of instances of the exact same virtual machine on a hypervisor.
In the virtualized environment case, all 10 virtual machines have 10 copies of the operating system and 10 copies of the app. The operating system itself is a lot of waste since it is pretty much the same code between the different virtual machines.
Enter containers — which pair individual apps with an OS run-time component.
So what’s the benefit? You use the same servers, but they do not necessarily duplicate your base system software, including the OS. With containers, you’re able to, without replication, leverage your core system to get all the benefits of what any individual app requires, when it needs it.
In a container-based environment, the system is setup so the OS component is shared between all 10 copies of the machines – eliminating waste. Also, if there is an update on the OS, you don’t have to update 10 copies of the machine or the OS.
One other benefit of a container is that once a developer builds the container, it pretty much stays unopened and untampered with all the way to the point of running it, which means you eliminate any errors in installing or deploying your app that used to happen with virtual machines. Also, a container can run unchanged on internal private cloud infrastructure and can also be shipped over to the public cloud to run without having to redo the container.
Benefits include not only resources to make your apps run, but also a granular look at the performance of specific apps. In a pre-virtualization world, this was not the case. And, it’s basically what’s attracting the IT industry to look at virtualization and containerization very, very closely.
And what about the dynamic between classic apps and how we develop new apps and the move to DevOps?
The classic waterfall scenario of “classic apps” — the app, development, testing, and deployment model — is losing favor. Rapid development, iterative deployment of new apps is what the industry is calling “DevOps”, and are gaining more favor within the IT community. Bringing containers back into the equation – datacenter operations have never been able to as efficiently manager new app development.
And the key here, really, driver to the new frontier of DevOps, is agility, speed, and the need to get apps to market quicker than ever before.