This year I started becoming familiar with Linux kernel namespaces, rootless containers, and the toolchain around Podman. In this article, I share my first experiences with beginners as well as developers, product managers, and solution architects so you all get to know how it feels to be a newbie to the container world.
Why should you care about Linux containers at all?
In my perception, the container hype started around the year 2015, when new buzzwords like Docker, Kubernetes, and OpenShift appeared. I didn't care about containers because literally none of my colleagues and users cared about this technology back then. We had our processes that worked fine (and still do). Of course, we had some problems, but this new technology didn't seem to solve any of them. So what changed that I suddenly started to care about this topic?
It's 2021 and the COVID-19 pandemic is still around, as are containers. However, the hype seems to be over, but I'm sure that containers found their place in the IT ecosystem, and they will be around for the foreseeable future. To keep up with my fellow sysadmin friends who are already familiar with container technologies, I started my journey through containerland.
Where to start?
When you ask somebody where to start, you sometimes just get "read the manual" messages or maybe a "there are some pretty good man pages available on Linux." But, how do you find the man page or read the manual when you don't know the name of the tool you are looking for?
Researching containers on the internet, you may struggle with two problems: Terminology and tutorial complexity. When you read a certain term for the first time, you might be confused about whether it means a company, a CLI tool, a container image, or a container instance. The second problem is that it seems there are only two kinds of tutorials out there: The "Hello, World!" one and the "This is how you deploy Kubernetes clusters in a multi-cloud environment using a combination of just three different automation and orchestration tools you probably never heard of."
To familiarize yourself with the terminology and the architecture of containers, I recommend the following articles, which are available online:
- A Practical Introduction to Container Terminology
- Architecting Containers Part 1: Why Understanding User Space vs. Kernel Space Matters
- Architecting Containers Part 2: Why the User Space Matters
- Architecting Containers Part 3: How the User Space Affects Your Application
After you've covered the theoretical basics, I recommend starting with a small starter project. Choose some software you are interested in, check if it's available as a container image, and start getting familiar with the tools by gathering your first practical experience.
Speaking of tools, I've chosen to start my journey with Podman because it's a simple tool to manage and to run your containers and pods without having to keep some kind of daemon running. I like the effort Red Hat has put into this tool and the possibility of running rootless containers. Also, Podman is available for a broad range of distributions.
For example, I run Podman on Red Hat Enterprise Linux 8 (RHEL). It is a small virtual machine running in my home lab with just one vCPU and 2 GB of RAM. This is enough for a simple project to start.
Now that you know the name, Podman, you also know how to find the man page that tells you how to use it. Additionally, I recommend the following documentation, even if you're running Podman on a distribution other than RHEL:
I started by running a Pod with a kanboard-container and a postgresql-96-container. When it comes to questions like, "How do I share data between containers?" or "How do I set up container networking?" the link above and the following one will help:
What to do when the first container/pod is up and running?
That's not so different from the job you already know. You now have to deal with the usual topics like:
- How and where to store data persistently
- Backup and restore
- Security hardening and updating
Enjoy what you have accomplished so far and think ahead on how to run your first Kubernetes/OpenShift cluster in your company or in your home lab.
Once you've got the terms and tools straight, it's easy to enter and explore this new world of container technology. Running rootless Podman containers provides you with the possibility to explore and try out new applications in a secure environment quickly and easily without messing up your host system's configuration.