Podman 4 and the Netavark Revolution

The emergence of Podman 4.0 represents a seismic shift in the landscape of container management, fundamentally altering how container lifecycles, images, volumes, and pods are orchestrated. At its core, Podman, which serves as the POD MANager, is a sophisticated tool designed for the management of containers and images, the volumes mounted into those containers, and pods—which are defined as groups of containers. The architecture of Podman is built upon libpod, a specialized library for container lifecycle management. This libpod library is not merely a dependency but is integrated into the repository, providing the essential APIs required for the management of containers, pods, container images, and volumes.

Podman is engineered to run natively on Linux, yet its utility extends to Mac and Windows systems through the utilization of a Podman-managed virtual machine. This allows users on non-Linux platforms to maintain a consistent workflow. One of the most defining characteristics of Podman is its daemonless architecture, meaning it works without a daemon and possesses the capability to run containers as a systemd service. This architectural choice removes the single point of failure often associated with daemon-based runtimes and integrates container management directly into the standard Linux service management framework.

Furthermore, Podman distinguishes itself through its inherent support for unprivileged users. It allows for the management of containers as an unprivileged user, removing the mandatory requirement to be root. When Podman is executed without root privileges, it employs user namespaces to map the root user inside the container to the specific user running Podman on the host. This ensures that rootless Podman runs locked-down containers with no privileges exceeding those of the user who launched the container. This security model is absolute; for instance, if a user runs Podman as their own user and attempts to mount the host's /etc/passwd file, they will remain unable to modify it because the host user lacks the necessary permissions. While some restrictions can be mitigated using the --privileged flag, the core security principle remains that rootless containers cannot escalate privileges beyond the parent user.

The Netavark and Aardvark Networking Overhaul

The most significant technical achievement in Podman 4.0 is the extensive rewrite of the networking stack. This new stack was developed from scratch using the Rust programming language, a choice driven by the need for memory safety and high performance. The new architecture consists of two primary tools: Netavark, which serves as the network setup tool, and Aardvark, which functions as the DNS server.

For years, Podman relied on the Container Networking Interface (CNI). However, the requirements of Podman and the CNI began to diverge. The CNI was originally designed to serve Kubernetes and is inherently based on cluster environments. In contrast, Podman is intended to be a dedicated single-node container management tool. This divergence created a need for functionality that the CNI was not optimized for, specifically the support for container names and aliases in Domain Name System (DNS) lookups.

The implementation of Netavark and Aardvark provides several critical technical advantages:

  • Better IPv6 support, allowing for more modern and scalable networking configurations.
  • Improved support for containers that need to be connected to multiple networks simultaneously.
  • Improved overall performance due to the efficiencies of the Rust-based implementation.

A practical enhancement introduced in this version is that Podman containers now automatically add the container's short ID as a network alias when they are connected to a supporting network. This simplifies service discovery within the network by ensuring that containers can be reached via their IDs without manual alias configuration.

Software Lifecycle and Release Cadence

Podman follows a rigorous and predictable release schedule to ensure stability and consistent improvement. The project releases a new major or minor version four times per year. These releases are scheduled for the second week of February, May, August, and November. In addition to these scheduled milestones, patch releases occur more frequently. These patches are deployed as needed to distribute bug fixes to the user base rapidly. To ensure the integrity of the software and prevent tampering, all Podman releases are PGP signed.

Technical Implementation and Installation

Podman is widely available across various Linux distributions and platforms, often integrated directly into the system repositories.

On Rocky Linux, Podman is included in the official repositories, making it a Docker-compatible alternative that is easier to deploy than external runtimes. Installation on Rocky Linux is achieved through the dnf utility using the following command:

dnf install podman

For users of other distributions, installation methods vary:

  • Gentoo: Installation is handled via the emerge tool: sudo emerge app-containers/podman
  • openSUSE: Installation is performed via zypper: sudo zypper install podman
  • OpenEmbedded: Bitbake recipes are available in the meta-virtualization layer. The build process is initiated with: bitbake podman
  • Raspberry Pi OS: This OS utilizes standard Debian repositories and is fully compatible with the Debian arm64 repository.

To verify the installation and explore available capabilities, users can retrieve a list of available Podman subcommands by executing:

podman --help

Command Reference and Operational Utility

Podman provides a comprehensive suite of subcommands for the full lifecycle management of containers, images, and pods. The general usage pattern follows the structure podman [options] [command].

The following table details the most commonly used subcommands and their operational functions:

Subcommand Description
build Builds an image using instructions from Containerfiles
commit Creates a new image based on the changed container
container Manages containers
cp Copies files/folders between a container and the local filesystem
create Creates but does not start a container
exec Runs a process in a running container
image Manages images
images Lists images in local storage
info Displays Podman system information
init Initializes one로 or more containers
inspect Displays the configuration of the object denoted by ID
kill Kills one or more running containers with a specific signal
login Logs in to a registry

Version Migration and Breaking Changes

The transition to Podman 4.0 introduced specific breaking changes that users must be aware of, particularly regarding database management. The most significant risk occurs during a version downgrade. If a user upgrades to Podman 4.0 and subsequently attempts to downgrade to Podman 3.x, they will encounter issues due to changes in the Podman database schema.

As the project progressed toward version 6.0.0, more drastic breaking changes were implemented to streamline the ecosystem:

  • Database Migration: Support for BoltDB databases was dropped. In Podman 6, the system attempts an automatic migration from BoltDB to SQLite when a BoltDB database is detected.
  • Platform Deprecation: Support for Intel Macs and Windows 10 has been removed.
  • Kernel and System Requirements: Support for cgroups v1 systems has been removed, requiring users to update to cgroups v2.
  • Networking Transitions: Support for iptables has been removed in favor of nftables. CNI networking has been entirely removed, mandating the use of Netavark.
  • Rootless Stack Changes: Support for the slirp4netns rootless network stack has been removed, and users are directed to use Pasta. Consequently, the --network-cmd-path global option, which was only used with slirp4netns, has been removed.
  • Logic Rewrites: The configuration file parsing logic underwent a major rewrite.

Integration and Tooling Ecosystem

Podman does not operate in isolation but is part of a larger ecosystem of container tools. For the latest versions, such as Podman v6.0.0, there are strict version dependencies to ensure compatibility across the toolchain:

  • Buildah: Must be version v1.44.0.
  • Skopeo: Must be version v1.23.
  • Netavark and Aardvark: Must be version v2.0.0.
  • Configuration Files: Must be from the container-libs repository's common/v0.68.0 release.

Additionally, operational logging has been improved. For example, the podman machine stop command now explicitly logs when machines are successfully stopped, providing better visibility into the state of virtualized Podman environments on Mac and Windows.

Security Analysis and CVE Mitigation

Security is a primary pillar of the Podman project, as evidenced by the proactive addressing of vulnerabilities. In version 6.0.0, the project addressed CVE-2026-57231. This vulnerability involved a scenario where a malicious image could use malformed Env entries. This malformation could cause host environment variables to leak into containers run from that image. Specifically, the vulnerability allowed the use of the * glob operator, enabling the leak of large numbers of environment variables without the attacker knowing their exact names.

Analysis of Architectural Evolution

The evolution of Podman from its early 2018 release to version 4.0 and beyond demonstrates a clear trajectory toward specialization. The shift from CNI to the Netavark/Aardvark stack is the prime example of this. By abandoning a general-purpose cluster tool (CNI) in favor of a purpose-built Rust implementation, Podman has optimized for the single-node use case.

The insistence on rootless operation by default is not just a feature but a security philosophy. By utilizing user namespaces, Podman ensures that the container runtime does not become a vector for host-level privilege escalation. The transition from BoltDB to SQLite further suggests a move toward more standardized, efficient, and maintainable data storage for container metadata.

The removal of legacy supports—such as cgroups v1, iptables, and Windows 10—indicates that Podman is aggressively shedding technical debt to embrace modern Linux kernel features (like cgroups v2 and nftables). This forces the ecosystem toward a more modern, secure, and performant baseline, albeit at the cost of compatibility with aging infrastructure.

Sources

  1. Red Hat Blog - Podman 4.0 Arrives
  2. GitHub - Podman Container Tools
  3. Red Hat Blog - Podman New Network Stack
  4. GitHub - Podman Releases
  5. Rocky Linux Documentation - Podman Guide
  6. Podman Installation Guide

Related Posts