Why Podman?
Podman and its affiliated projects can help manage OCI-compatible containers in several different ways, making it more than a Docker substitute:
-
Licensing
Podman is Apache-2.0 licensed. Basically, it's open source and can be used by an unlimited number of users for free. If you like using Docker Desktop, its Podman equivalent is free and open source as well, and won't ask you to pay if your company gets past a certain size.
-
Security
Podman allows its containers to be rootless. What is rootless? It means there isn't one central process (daemon) that's in charge of all your containers. Not one central process that could crash and bring down all your containers, not one central process that could get compromised, and start acting maliciously. To be fair, Docker has rootless mode now too, so if rootless is your only attraction, just switch to that.
-
Integration with SystemD
Podman's Quadlets facilitate integrating with systemd as well. Why bother integrating with systemd? Your web app is probably running on a server with Linux, and that version of Linux is probably using systemd. systemd isn't technically part of Linux itself, but it's the unofficial standard init system for most Linux distros, including Fedora, Ubuntu, and many others. Unless your server is running Slackware, integrating with systemd is a no-brainer.
-
Pods
As the name suggests, Podman works with sets of pods. Although Docker has no equivalent feature, pods aren't specific to Podman either, as the concept was inspired from Kubernetes. Pods allow containers to be grouped together and given their own network namespace. Once containers are grouped into “pods”, those pods can be started/restarted together, like podman pod start my-app.
This feature is less geared towards developers, more so system admins/devops who manage lots of containers. That said, they're easy to set up, and alleviate some of the tedium associated with spinning up/down large numbers of containers.
I've been using Podman for a few years now, and overall I've found it a completely acceptable replacement for Docker. That said, I've found most of the tutorials/resources (and subsequently, AI) have described Podman from a more system-admin/devops workflow, not a web developer workflow. So in the next few posts, I'm going to outline some ways I've found to work with Podman containers. Some of them will be fairly familiar (like podman-compose), while others are much newer (like a Kubernetes-style “kube” file).