| 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:
dnf info podmanSample output on RHEL 10:
Name : podman
Version : 5.8.2
Release : 5.el10_2
Architecture : x86_64
Repository : @System
From repo : rhel-10-for-x86_64-appstream-rpmsAfter install, confirm the binary:
podman --versionSample output on the lab host:
podman version 5.8.2If 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:
cat /etc/os-releaseSample output on the RHEL lab host:
NAME="Red Hat Enterprise Linux"
VERSION="10.2 (Coughlan)"
ID="rhel"
ID_LIKE="centos fedora"Check the running kernel:
uname -rSample output:
6.12.0-211.47.1.el10_2.x86_64If you plan rootless containers, verify subordinate ID ranges for your login user (not root):
grep "^$(id -un):" /etc/subuid /etc/subgidSample output for user podtest on the lab host:
/etc/subuid:podtest:983040:65536
/etc/subgid:podtest:983040:65536Missing 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. Supportspodman build,podman push, andpodman pullon 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-composeis not in base AppStream on every RHEL release — check withdnf info podman-composeand enable EPEL when your major requires it.
Install only Podman on any supported RHEL release:
sudo dnf install podmanOn the lab host where Podman was already present, DNF reported:
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:
sudo dnf install container-toolsOn RHEL 8, install the module stream instead:
sudo dnf module install container-toolsDNF 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:
podman --versionSample output:
podman version 5.8.2podman info prints the runtime stack — OCI runtime, cgroup mode, network backend, and storage driver:
podman infoUseful fields from the lab host (trimmed):
cgroupManager: systemd
cgroupVersion: v2
networkBackend: netavark
ociRuntime:
name: crun
graphDriverName: overlayRead these lines together:
ociRuntime.name— which low-level runtime starts containers (crunhere)networkBackend—netavarkon current RHEL AppStream buildscgroupVersion/cgroupManager— cgroup v2 with systemd integration on this hostgraphDriverName— overlay storage undergraphRoot(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:
podman run --rm quay.io/podman/helloSample 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:
podman info --format 'rootless={{.Host.Security.Rootless}} version={{.Version.Version}}'Sample output for podtest:
rootless=true version=5.8.2Confirm subordinate mappings if rootless=false or pulls fail with ID errors:
grep "^$(id -un):" /etc/subuid /etc/subgidWhen 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:
sudo dnf update podmanUpgrade the whole container toolset when you installed container-tools on RHEL 9 or 10:
sudo dnf update container-toolsOn RHEL 8, update packages associated with the active container-tools module:
sudo dnf module update container-toolsRe-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:
sudo dnf remove podmanIf you installed the meta-package on RHEL 9 or 10, remove it the same way:
sudo dnf remove container-toolsOn RHEL 8, remove the module the same way you installed it:
sudo dnf module remove container-toolsRemoving 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:
sudo rm -rf /var/lib/containers/storageAvoid 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.

