Containers are great, but they’re not a panacea. Here are five challenges within the software delivery process that Docker containers can’t help you to solve.
To be clear, I don’t mean to imply that Docker can’t improve software delivery in any way. It certainly can. Docker containers make testing more reliable, speed deployment, facilitate easier updates and improve scalability. Those are all key advantages from a software delivery perspective.
But there are other obstacles that arise during software delivery that Docker can’t handle. They include the following.
Code Development Speed
Containers help you to deploy applications faster. But you still have to write the application code. That process takes the same amount of time whether your app is containerized, runs in a virtual machine or runs on bare metal.
In this respect, containers don’t help developers to achieve faster results.
Build and Compile Times
Nor do containers speed the compile and build process for an application.
On the contrary, containers can add build time because in addition to compiling your code, you have to create container images.
Of course, once your app is built, using containers can help you to deploy it faster. In this respect, containers may make up during deployment for the additional time required for builds.
One major drawback of containers as compared to virtual machines is that a containerized application written for a Linux environment can’t run on Windows and vice versa.
Although the recent introduction of LinuxKit provides a way to work around this limitation, having to use LinuxKit adds another layer of complexity to your delivery process. If you want a “pure-play” solution for building an app once and being able to deploy it on either Windows or Linux, virtual machines are still your only answer.
Security is a tough category when it comes to Docker. To say that Docker containers don’t improve security is not quite true. Containers certainly can help to bolster application security in some ways, such as by enabling more reliable updates and providing some isolation between applications.
That said, in other respects containers create new security challenges. They don’t provide nearly as much isolation as virtual machines. And containers introduce more moving parts into an environment, which makes security more challenging.
The lesson here is that you shouldn’t think of containers as a simple way to solve all of your security problems. While containers can help to improve security in some ways, they create new security challenges in other ways.
Environment Setup and Provisioning
Once a Docker environment is set up, deploying applications to it using containers is usually faster and easier than it would be with virtual machines or bare metal. This is thanks largely to orchestrators including Swarm and Kubernetes, which automate the provisioning of applications and services within an environment.
However, you still have to set the environment up to get things started. Containers don’t make environment installation and setup any more difficult or easier than it would be with alternative technologies.