5 reasons developers love containers
Linux containers have been around for almost a decade, but it was only with the release of Docker four years ago that large numbers of developers began to adopt the technology. Now it seems that containers are everywhere and their popularity continues to rise.
Containers have become such an important part of the IT landscape that server virtualization giants like VMware and Microsoft have had to go out of their way to accommodate them. VMware now offers a way to deploy, run and manage containers from within its vSphere virtualization infrastructure management system, while Microsoft — which has built Hyper-V server virtualization into its Windows Server product — has partnered with Docker to create Windows Server containers, and containerization support has been added to the Windows 10 kernel.
That’s because virtual machines (VMs) used to be the go-to technology for agile organizations. Now many of these organizations are rethinking their virtualization strategies and looking to containers either in addition to, or instead of, VMs.
Developers in the driver’s seat
If there is one population of IT professionals among which containers in general, and Docker, in particular, has proved particularly popular, it is software developers. The reasons for this include Docker’s ease of installation and use, its capability to automate common tasks, its useful documentation and code snippets, and perhaps even the fact that it is open source. And it’s almost certainly true that these factors combined have helped to make Docker popular with developers.
But there’s more to it than that. Here are five reasons that developers love Docker.
1. The trend towards microservices
There is a trend today away from monolithic apps and towards a microservices architecture with applications (or services) built from multiple self-contained components. In many cases these components are perfect candidates for containerization. “Developers like containers because they make it easier for them to move to a microservices architecture — they reduce friction,” says Dave Bartoletti, an analyst at Forrester Research.
In fact, the relationship between containers and microservices architecture is complex because the two are interdependent, according to Al Gillen, a software development analyst at research firm IDC. “Containers give you the ability to ‘do’ microservices, and microservices work well with containers,” he says. Put another way, developers like containers because they are convenient for building microservices, and one reason for the popularity of the microservices architecture is that containers make them easy to implement. It’s a kind of chicken and egg situation.
2. The rise of DevOps
There’s another reason developers like the microservices architecture, Gillen says. “If you build microservices, or a compartmentalized app with small logical pieces that interact through APIs, then that is better for moving towards DevOps,” he says.
You could argue that most developers care about writing code and not about how their applications are deployed, but the reality is that the DevOps process is becoming more common, and containerization certainly makes deployment easier. That’s because containers will run in any environment — from a laptop to a data center or the cloud — and many DevOps tasks can be automated using Docker. “You can certainly do DevOps without containers, but each builds on the other,” says Bartoletti. “If you want DevOps, it is easy to do on a container infrastructure.”
3. Developer laziness
Larry Wall, the original author of the Perl programming language, famously called laziness one of the three virtues of a great programmer. (The other two, in case you were wondering, are impatience and hubris.)
Laziness in this context means using labor-saving tools and automation whenever possible, and containers make this kind of laziness very easy. “Before, developers would write their code and send it off to be tested, and it didn’t work,” says Bartoletti. “Then the developer would realize that there were changes to the Linux environment that they had made, so the test environment would have to be reconfigured. But with containerized code they can send their work to test without needing to do any modifications.”
Docker also makes it easy for developers to be lazy by offering a useful set of tools that automate many of the most boring and mundane tasks associated with the app creation and development process. One such task is setting up Docker; Docker Machine lets developers spin up Docker in the cloud with a single command.
4. The attraction of open source tools
The simple fact that Docker is open source and has a wide community of contributors as well as partners is another reason for its popularity with developers.
Open source development tools tend to be popular with developers because they are interested in development tools in general and because they are uniquely qualified to write and contribute code – or plugins to the code – to make open source development tools better.
In addition, many developers are reluctant to get “locked in” to a particular vendor’s platform, and Docker is part of an open source ecosystem that includes Docker’s Swarm orchestration system, for example, but also includes alternative orchestration systems such as Google’s Kubernetes. And because it is open source, developers are free to write their own orchestration system if they wish.
Since a container system such as Docker is a fundamental part of an organization’s IT infrastructure, the fact that it is open source is also extremely helpful when it comes to troubleshooting and optimization. Because developers aren’t working with a “black box,” when problems or unexpected behavior occurs they can look at Docker’s source code to identify problems and understand how to work around them.
5. Enhanced career prospects
One final reason why developers like using containers and Docker is that it’s (relatively) new. “Developers generally want to get their hands on the newest tools, and that’s because it is an investment in their career,” he says.
“You don’t want the lead item on your resume to be that you have 50 years of COBOL experience, but if you can say that you up to speed with agile development techniques and you are familiar with Docker then that’s going to look good.”