Containers keep development environments clean, services organized, and infrastructure scalable. They're being used on the cloud, on bare metal (on both servers and workstations), and on the edge.
Containers are rarely built from scratch, though. They're usually based on a minimal container image provided through a container repository or "hub." And because containers are so popular and so easy to publish, there are a lot of container images to choose from. Here are the top five container images you need to know about.
UBI is Red Hat Enterprise Linux (RHEL) in a container.
I rely on RHEL for many reasons, and even though containers are meant to be ephemeral, there's no reason to base your Linux environment on anything but the best. I trust RHEL, I've based my mission-critical infrastructure on it for over a decade, and I love being able to use it for my containers.
Universal Base Image (UBI) recognizes that your Linux containers are probably not as portable as you might think, and it aims to solve that problem for you. UBI enables you to build your container once and freely redistribute it to multiple deployment platforms (Red Hat or otherwise).
There are three flavors of UBI, and the one you're likely to adopt depends on your use case:
ubi: contains a full crypto stack, a package manager, and basic operating system utilities
ubi-init: MySQL and httpd all in one container
ubi-minimal: No suid binaries, minimal
I find myself gravitating toward UBI Init, but that's influenced strongly by the projects I work on. For many, the UBI Minimal image offers the ideal flexibility for building up the environment you need for an application or service.
$ podman pull ubi9-init
[ Learn how to build a flexible foundation for your organization. Download An architect's guide to multicloud infrastructure. ]
You don't have to be a web developer to find Nginx useful. It's fast, its configuration can be as simple as a single file using minimal markup, you can use it as a reverse proxy or as an Ingress controller for Kubernetes. This is the container image I'd take when stranded on a desert island.
$ podman pull nginx
I'm a fan of Perl, but you don't have to love the language to recognize there are a lot of historical Perl scripts and utilities in use today. It might not occur to you that you don't have to install Perl in each individual container relying on Perl. You can provide Perl as a container instead.
I do use the Perl container, but I'm also using it as an example here. Language and development support can often be containerized, so whether you're using Perl, Python, Java, Quarkus, or something else, there may be container options to lend consistency to your dev team's experience.
$ podman pull perl
[ Download the Perl cheat sheet. ]
Grafana is a dashboard platform, useful for monitoring infrastructure or anything else that can be quantified. It's a customizable, flexible, and supremely visual application that not only dazzles your stakeholders, but actually provides useful information. Your sysadmins might want to install and maintain it manually, but installing it as a container makes it really easy.
The image is an official publication of the Grafana project.
$ podman pull grafana
[ Become a Red Hat Certified Architect and boost your career. ]
5. <Your image here>
No container image is one-size-fits-all. The appeal of a container, as with open source in general, is that ultimately it's a building block. It's a foundation that you can build upon to improve your team's workflow and make your organization's infrastructure better. Whether you think you need to build a container from scratch or base it off an existing one, there's no reason to settle for images that don't suit your exact use case. Build a better container image!
Containers are a tool. When you need them, they can make the investment into a new technology almost trivial from a trial and maintenance perspective. As container adoption continues, you'll probably find more ways to integrate them into your infrastructure, so find your favorite container recommendations now and get comfortable with life outside the box (but inside containers).
[ Check out Red Hat's Portfolio Architecture Center for a wide variety of reference architectures you can use. ]