Install Podman on RHEL: Commands, Versions & Requirements

Tested on Red Hat Enterprise Linux 10.2 (Coughlan)
Package podman-5.8.2-5.el10_2.x86_64
Applies to Red Hat Enterprise Linux 8, 9, and 10
Privilege sudo or root for package install; normal user for rootless verification
Scope Install Podman from RHEL AppStream, compare podman and container-tools, map shipped versions to Quadlet feature gates, verify CLI and runtime stack, run a hello-world container, and smoke-test rootless mode. Does not cover Rocky/Alma paths, source builds, Podman Desktop, or full rootless remediation.
Related guides Install Podman on Rocky Linux
Install Podman on Ubuntu
Install Podman on Debian
What is Podman?

You do not need to compile Podman or install Docker first. RHEL ships podman in AppStream — the install command is one line once the system is registered, but the version in that repository changes everything about which flags, network backends, and Quadlet unit types work on your host.

For Rocky Linux, AlmaLinux, or CentOS Stream, use Install Podman on Rocky Linux. For Ubuntu, use Install Podman on Ubuntu. For Debian, use Install Podman on Debian.


Podman installation quick reference

RHEL release Podman only Full toolset
RHEL 8 sudo dnf install podman sudo dnf module install container-tools
RHEL 9 / 10 sudo dnf install podman sudo dnf install container-tools

podman alone is enough to run containers and build images with podman build. Choose container-tools when you also want standalone Buildah, Skopeo, and related utilities in one supported bundle.

After either path succeeds, jump to Verify the Podman installation.


Which Podman version does RHEL provide?

Upstream Podman releases frequently. RHEL AppStream pins a maintained build and rebases it during the supported lifecycle. A tutorial written for Podman 5.8 may reference Quadlet files or flags that do not exist on an older AppStream branch.

Repository versions verified in August 2026:

RHEL release Package version in AppStream How verified
RHEL 10.2 5.8.2 (5.el10_2) dnf info podman on lab host
RHEL 8 / 9 Varies by enabled repositories and update level Run dnf info podman on your host

Re-check before you publish automation — security errata bump the release suffix without always changing the headline major.minor.

Query AppStream on your registered host:

bash
dnf info podman

Sample output on RHEL 10:

output
Name         : podman
Version      : 5.8.2
Release      : 5.el10_2
Architecture : x86_64
Repository   : @System
From repo    : rhel-10-for-x86_64-appstream-rpms

After install, confirm the binary:

bash
podman --version

Sample output on the lab host:

output
podman version 5.8.2

If a guide fails with “unknown flag” or missing subcommand, compare your podman --version output to the version the author assumed and the feature table below.


Podman feature availability by version

AppStream packages trail upstream, so feature gaps usually mean your package is too old, not that Podman is broken.

Feature or unit type Typical minimum Podman What breaks when missing
Basic Quadlet (.container, .volume) 4.4 No systemd generator units under /etc/containers/systemd/
.network, .kube 4.6+ Network or Kubernetes YAML Quadlet units ignored or rejected
.image units 4.8+ Cannot declare image-pull units separate from containers
.pod units 5.0 Pod-scoped Quadlet files ignored or rejected
.build units 5.2 No Quadlet-driven podman build one-shot services
podman quadlet CLI (install/list/print/rm) 5.6 Quadlet management subcommands from tutorials not found
.artifact units 5.8 OCI artifact Quadlet type unavailable
netavark default network backend 4.4+ (distro-dependent) Older packages still default to CNI plugins
podman artifact commands 5.4+ preview; 5.8+ Quadlet Artifact workflows fail on 4.x hosts

This is a reader’s guide, not a changelog. When a tutorial shows a Quadlet filename your install rejects, check both the feature row above and your podman --version output.


Check RHEL requirements before installing Podman

Podman requires a Linux environment with the kernel features needed for containers, including namespaces and cgroups. Rootless operation also depends on user-namespace support and appropriate user-ID mappings. RHEL AppStream pulls conmon, crun, and netavark-related dependencies automatically — you do not install those separately unless you are building from source (out of scope here).

Confirm the distribution:

bash
cat /etc/os-release

Sample output on the RHEL lab host:

output
NAME="Red Hat Enterprise Linux"
VERSION="10.2 (Coughlan)"
ID="rhel"
ID_LIKE="centos fedora"

Check the running kernel:

bash
uname -r

Sample output:

output
6.12.0-211.47.1.el10_2.x86_64

If you plan rootless containers, verify subordinate ID ranges for your login user (not root):

bash
grep "^$(id -un):" /etc/subuid /etc/subgid

Sample output for user podtest on the lab host:

output
/etc/subuid:podtest:983040:65536
/etc/subgid:podtest:983040:65536

Missing or unsuitable subordinate UID/GID mappings are a common cause of rootless container failures, especially when images require multiple mapped IDs — see Rootless Podman for remediation. Rootful installs with sudo do not need subuid entries for the root account.


Install Podman on RHEL

RHEL serves podman from AppStream, but DNF needs a registered system with working Red Hat repository metadata before the transaction succeeds. Register the system with Red Hat and make sure BaseOS and AppStream are enabled.

podman vs container-tools

Choose the install path that matches what you need on the host:

  • podman — Podman CLI and runtime stack only. Supports podman build, podman push, and podman pull on its own through Buildah libraries, so you do not need the standalone Buildah CLI simply to build images.
  • container-tools — Broader Red Hat container toolset with standalone Buildah, Skopeo, and related utilities. On RHEL 9 and 10 it is a meta-package (dnf install container-tools). On RHEL 8 it is a module stream (dnf module install container-tools).
  • podman-docker (optional) — Docker CLI compatibility wrapper. podman-compose is not in base AppStream on every RHEL release — check with dnf info podman-compose and enable EPEL when your major requires it.

Install only Podman on any supported RHEL release:

bash
sudo dnf install podman

On the lab host where Podman was already present, DNF reported:

output
Package podman-7:5.8.2-5.el10_2.x86_64 is already installed.
Nothing to do.
Complete!

Install the broader container toolset on RHEL 9 or 10:

bash
sudo dnf install container-tools

On RHEL 8, install the module stream instead:

bash
sudo dnf module install container-tools

DNF resolves the full runtime stack in one transaction — you do not install conmon, crun, or netavark manually on a normal AppStream install.


Verify the Podman installation

Confirm the client version:

bash
podman --version

Sample output:

output
podman version 5.8.2

podman info prints the runtime stack — OCI runtime, cgroup mode, network backend, and storage driver:

bash
podman info

Useful fields from the lab host (trimmed):

output
cgroupManager: systemd
  cgroupVersion: v2
  networkBackend: netavark
  ociRuntime:
    name: crun
  graphDriverName: overlay

Read these lines together:

  • ociRuntime.name — which low-level runtime starts containers (crun here)
  • networkBackendnetavark on current RHEL AppStream builds
  • cgroupVersion / cgroupManager — cgroup v2 with systemd integration on this host
  • graphDriverName — overlay storage under graphRoot (full paths appear later in the same output)

If podman info fails after installation, read the reported error first. Check runtime/configuration and package state before reinstalling Podman — see Podman troubleshooting for common causes.


Run a test container

Pull and run the official hello image to exercise registry access, storage, runtime, and conmon:

bash
podman run --rm quay.io/podman/hello

Sample output:

output
!... Hello Podman World ...!

A successful greeting means Podman resolved the image, created a container filesystem, invoked the OCI runtime, and cleaned up with --rm. Registry or TLS failures point to network or CA trust issues, not a missing package.

Next step for day-to-day flags: Run containers with podman run.


Verify rootless Podman

Rootless mode lets a normal user run podman without sudo. On the lab host, user podtest already had subuid ranges.

As the user who will run containers, check rootless status:

bash
podman info --format 'rootless={{.Host.Security.Rootless}} version={{.Version.Version}}'

Sample output for podtest:

output
rootless=true version=5.8.2

Confirm subordinate mappings if rootless=false or pulls fail with ID errors:

bash
grep "^$(id -un):" /etc/subuid /etc/subgid

When ranges are missing or pulls fail with user-namespace errors, follow Rootless Podman — this install guide only confirms the smoke test.


Optional Podman packages

Install add-ons only when you need them:

Package Purpose
podman-docker Provides a docker CLI symlink/wrapper that calls Podman
podman-compose Compose-file workflow via podman-compose (distinct from podman compose plugin)
buildah Standalone image builds; also used internally by podman build
skopeo Copy and inspect images between registries without running containers
criu Checkpoint/restore support when enabled in policy
passt / pasta Userspace networking for rootless paths (packaging name varies)

dnf install container-tools on RHEL 9 and 10, or dnf module install container-tools on RHEL 8, pulls several of these together. Do not install every row “just in case” — each package expands the support surface on the host.


Update Podman

Use DNF's native upgrade path:

bash
sudo dnf update podman

Upgrade the whole container toolset when you installed container-tools on RHEL 9 or 10:

bash
sudo dnf update container-tools

On RHEL 8, update packages associated with the active container-tools module:

bash
sudo dnf module update container-tools

Re-run podman --version after upgrades. Red Hat backports fixes without always jumping to the latest upstream minor. Compiling from source solely to chase the newest tag is outside this guide — and costs you distro integration testing.

Major upgrades (4.x → 5.x, or eventually 5.x → 6.x) may change defaults such as the network backend. Read release notes; for Podman 6 breaking changes when AppStream ships them, see Podman 5 to 6 migration.


Uninstall Podman

Remove the package when you no longer need the engine:

bash
sudo dnf remove podman

If you installed the meta-package on RHEL 9 or 10, remove it the same way:

bash
sudo dnf remove container-tools

On RHEL 8, remove the module the same way you installed it:

bash
sudo dnf module remove container-tools

Removing the package does not delete images, containers, or volumes on disk. Rootful storage commonly remains under /var/lib/containers/storage; rootless users keep ~/.local/share/containers/storage.

Delete storage only when you intentionally want a full wipe and have backups:

bash
sudo rm -rf /var/lib/containers/storage

Avoid podman system reset --force in documentation unless you are teaching destructive cleanup — it removes all Podman-local data in one step.


AppStream package vs latest upstream Podman

Upstream Podman at podman.io moves faster than RHEL AppStream. Fedora and Arch often ship the newest minor; RHEL err on stability and SELinux integration testing.

Approach Trade-off
RHEL AppStream package Tested with your kernel, SELinux policy, and systemd; best default for servers
Newer RHEL major Often the supported way to get a newer Podman major without source builds
Upstream binary / source Possible but unsupported by Red Hat; not covered here

When tutorials assume netavark, Quadlet .build files, or podman artifact, compare against the feature table and your podman --version output — not the latest GitHub tag.


Troubleshooting

Symptoms beyond package install — storage corruption, registry rate limits, rootless networking — are cataloged in the Podman troubleshooting library.

Symptom Likely cause Fix
podman: command not found Package not installed Run sudo dnf install podman after enabling AppStream
Unknown flag or missing subcommand Older AppStream package Check podman --version; compare with the feature table or plan an OS upgrade
TLS error pulling quay.io Proxy or untrusted corporate CA Fix clock sync; add CA under /etc/containers/certs.d/
dnf install finds no podman Repos disabled or missing subscription Enable AppStream; verify subscription-manager status
Rootless pull fails with subuid/subgid errors Missing /etc/subuid or /etc/subgid range Add mappings per the Rootless Podman guide

References


Summary

Installing Podman on RHEL is sudo dnf install podman from AppStream once the system is registered with Red Hat and BaseOS and AppStream are available. Install podman for the CLI alone. On RHEL 9 and 10, use sudo dnf install container-tools for the broader toolset; on RHEL 8, use sudo dnf module install container-tools.

On the RHEL 10.2 lab host, podman --version reported 5.8.2 with crun, netavark, cgroup v2, and overlay storage confirmed in podman info. Run dnf info podman on your own release because AppStream rebases packages across the OS lifecycle. The feature table maps Quadlet unit types and CLI helpers to minimum Podman versions so you can diagnose tutorial mismatches quickly.

The hello image proves registry, storage, and runtime integration end to end; a rootless podman info check confirms subuid mappings for unprivileged users. For Rocky Linux or AlmaLinux paths, see Install Podman on Rocky Linux; for Ubuntu, see Install Podman on Ubuntu; for Debian, see Install Podman on Debian. For internals after install, continue with Podman architecture or Run containers with podman run.


Frequently Asked Questions

1. How do I install Podman on RHEL?

Register the system with Red Hat, enable BaseOS and AppStream, then run sudo dnf install podman. DNF pulls conmon, crun, netavark, and related dependencies in one transaction. Verify with podman --version and podman info before following tutorials written for newer Podman majors.

2. Why is my RHEL Podman version older than upstream?

RHEL AppStream pins maintained packages that lag the latest upstream release. A tutorial written for Podman 5.8 may reference flags or Quadlet files that do not exist on an older AppStream build. Run dnf info podman on your host and compare the result to the feature table in this guide.

3. Do I need Docker installed before Podman?

No. Podman is standalone. The optional podman-docker package only adds a docker command wrapper that calls Podman; it does not install Docker Engine.

4. What is the difference between podman and container-tools on RHEL?

podman installs the engine and runtime dependencies. On current RHEL releases, container-tools provides the broader supported toolset; RHEL 8 exposes container-tools through module streams (dnf module install container-tools), while RHEL 9 and 10 install it as a meta-package (dnf install container-tools). Either path is valid; choose container-tools when you want Buildah, Skopeo, and related utilities together.

5. Does uninstalling the podman package delete my images?

No. dnf remove drops the binaries but leaves storage under graphRoot, typically /var/lib/containers/storage for rootful installs and ~/.local/share/containers/storage for rootless users. Delete those directories only when you intentionally want a full wipe.
Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with more than 15 years of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels across development, DevOps, networking, and security, delivering robust and efficient solutions for diverse projects.

  • Go (programming language)
  • Python (programming language)
  • DevOps
  • Computer Security
  • Cloud Computing
  • Kubernetes
  • Linux
  • Ansible (software)