Let’s discuss container management systems. So far, we’ve explored the history of containers, and talked about what a container actually is from an ops perspective. In the last post, we discussed how devs use containers: to build applications. Let’s delve deeper into how they actually plan to do that.
As a reminder, this blog series is exploring containers from an operations point of view. Also, I work at VMware.
Containers hold the building blocks for applications
When someone says “containers” and they aren’t talking about management, most likely they are talking about a container image. According to TechTarget, a container image is:
A container image is an unchangeable, static file that includes executable code so it can run an isolated process on … IT infrastructure. The image is comprised of system libraries, system tools and other platforms settings a software program needs to run on a containerization platform such as Docker or CoreOS Rkt. The image shares the OS kernel of its host machine.
One reason containers became so popular with developers is that you can encapsulate approved version of an environment in a container image, and have all of your developers work from that image. This way, developers working on new applications will use the exact parameters their code will run on in production. This should make it seamless to go from test to dev to prod. No more “well it worked in dev…” or “it worked on my system….”, because the they will be coding in a replica of the approved environment.
What is a container management system?
Now that we’ve reviewed what a container is, it should be intuitive to realize that containers are for developers. Containers makes their job of creating and improving applications much easier. They can develop on the same systems as the ones that will be in production, so the transition from test/dev environments should be seamless.
What could go wrong? Remember VM sprawl? Containers are easy to create and deploy, so you need a system to keep track of them. How do you make sure containers are being created in an image that is production approved? How can you manage security? How can you make sure you can easily move these containers between servers, and even the cloud? At a very basic level, this is what container management systems can do for you.
Additionally, containerized apps may separate the individual components of an application into several different container images. To bring these to life, it will be important that there is a coordinated way to start each container in the correct order.
What are common container management applications?
Popular container management applications are Docker Platform, Kubernetes, IBM Cloud Foundry, and Google Kubernetes Engine (GKE). This is the short list, at the time of this writing. Expect this list to expand and contract, as container adoption is just beginning to pick up steam in our industry. This Server Density article [written in 2017] gives a great operations perspective comparison of current tools.
What do you look for in a container management application? Well first of all, will ops even own this decision? This may be a tool your develop team chooses. Generally, a container management application will need something to help you with container images as well as container orchestration. It will probably help with securing containers. It should also have the ability to manage containers on premises or in the cloud. But as this article points out [also written in 2017], the features your team lands on in a container management application will depend on the development and operational requirements of your organization, as well as available technical skills.
Why do ops people need to understand these apps?
While developers may choose which version of containers and container management applications to use, operations will need to nail these systems to the ground. In other words, ops will manage the hardware, networks, and storage that host containers and their management systems.
Never forget, the ops in devops is operations. This is our chance to really support the developers in our orgs, by understanding how they need to build and support apps, and then building, managing, and securing the architecture to support it, or managing how it is stretched to the cloud.
Are you currently supporting a containerized environment? What sort of management apps are being used? Share your experiences with us in the comments.