My colleague, Boris Vezmar, published a blog post titled ‘Containers: The Game Changer’ back in March 2016. Containers were a new shiny toy back then, a topic to discuss at our gatherings, a buzzword that marketing people just started to use to lure unsuspecting customers… yet something not many people used (that is, if you’re not Google).
Fast forward four years – where are containers today? Is there something new that hasn’t been available in 2016? Has the technology matured enough that even those who are known to stick to proven technologies open up to containers?
TL;DR – containers are everywhere, there is some new stuff that enabled it to be used everywhere. They matured enough, so those who are known to stick to old and proven technologies are turning to containers and I’m scared shitless and you should be, too.
New stuff
First, regarding the new stuff – containers are not limited to Linux these days (yeah, yeah, I know, Solaris has Zones and FreeBSD has Jail, at least one of them predates Linux containers, but still…). Microsoft implemented containers in their Windows products and partnered with Docker to make them easy to use. Plus, they added support for Linux containers on Windows. They’ve also added container support in their Visual Studio family of products, to make life easier for developers.
Choose faster, smarter and a proven way for your software deployment pipeline using Containers as a Service with SuperAdmins
Also, Docker is not the only container implementation for Linux. There are other contenders, some of them backed by some prominent Linux distros. LXD is based on LXC (the standard Linux technology for implementing containers) and is a competitor for Docker and backed by Canonical, the creators of Ubuntu. Notice: Docker started as an extension of LXC, but migrated to their own implementation, called libcontainer.
On the cloud side of the world, EVERYBODY these days offer containers as a service. Even VMware added Docker support for their vSphere so you can run containers natively on a vSphere environment.
Maturity
The sign that some technology has matured is that the ecosystem, the set of tools and apps that use said technology, has stabilized. In the beginning, there are myriad of competing tools used for, for instance, managing the technology in question, but as time passes some of those tools drop off – either as they are not as good as others, or their userbase largely switched to other tools. This is the sign for those who want to use such technologies but are afraid to invest in tools and knowledge that can disappear next year that the winners are up and that it’s safe to commit yourself to those that remained standing when the battle ended.
The greatest problem that Docker had for wider consumption is that it was essentially a single node technology. That doesn’t mean that you couldn’t set up a bunch of nodes running Docker and somehow manage that bunch as a whole, but there wasn’t a single implementation that provided that – especially when it came to networking the containers over the single node boundary. Also, there wasn’t a good tool to orchestrate and manage the entire container infrastructure as a single unit. So, several competing tools appeared, briefly fought for supremacy and Kubernetes emerged as a clear winner. There are still some pockets of resistance, like ECS by AWS (who, by the way, also offers Kubernetes to orchestrate containers).
But how ubiquitous are containers? Well, the other day my colleagues and I talked about what usage scenarios should prefer virtual machines over virtual environments, a.k.a. containers and we really struggled to find something that can run better on VMs. More and more exciting new web or mobile products are based on microservices, which are feeling the best when implemented as containers.