You’ve heard about containers. You’ve heard about DevOps. But do you know what DevOps and containers have to do with each other? If not, this post is for you.
Containers and DevOps often are part of the same conversation. That’s not because they are the same thing, however. They are very distinct concepts.
Containers are a type of technology that makes it easier to host applications inside portable environments. Containers have been around in the Linux world for well over a decade. But it was not until 2013, when Docker launched, that containers become popular.
DevOps, in contrast, is a set of cultural practices related to software development. It emphasizes collaboration between all parts of the IT organization and the “continuous delivery” of software.
An important thing to understand is DevOps is not tied to any particular type of technology. Adopting it does not mean that you simply use a particular set of tools or frameworks to build software. You can do DevOps with any type of tool.
DevOps and Containers
So what, then, does DevOps have to do with containers? The answer is that, although you don’t have to use containers to do DevOps, containers are a great tool for making it easier.
Containers offer several key benefits that help to enable DevOps workflows. Those benefits include:
- An easy solution for making development, testing and production environments consistent. When you write, test and deploy your application inside containers, the environment does not change at different parts of the delivery chain. That makes collaboration between different teams (developers, testers and admins) easier because they all are working with the same containerized environment.
- Simple updates. Continuously delivering software requires rolling out application updates on a constant, streamlined basis. Containers help to do that because they make it easy to apply updates to applications. When your app is distributed into multiple microservices, each one hosted in a separate container, you can update one part of the app by restarting the container without interrupting the rest of the app.
- Support for multiple frameworks. When you do DevOps, having the agility to switch easily between different programming frameworks or deployment platforms is easy. Containers enable that agility because they are relatively agnostic toward programming languages and deployment platforms. You can run almost any type of app inside a container, regardless of the language it is written in. And you can move containers easily between different types of host systems; for example, if you want to switch from Red Hat to Ubuntu (or vice versa—I’m not trying to favor one distro over another), you can do that very quickly with containers. The big caveat here is that you can’t move a containerized app from a Linux to a Windows server, or vice versa, because Docker on Windows is very different from Docker on Linux.
For all of these reasons, containers can make DevOps a lot simpler. Keep that in mind if you’re planning a migration at your organization.