RHCSAv10 · RHEL 10

Lessons

Containers with Podman

updated 2026-10-19 by seed

Goal

Podman replaces Docker on RHEL, daemonless and rootless by default. The exam asks you to run a containerised service and keep it persistent.

Run

podman run -d --name web -p 8080:80 docker.io/library/nginx
podman ps
podman logs web
podman inspect web | head
podman exec -it web /bin/bash
podman stop web; podman rm web

Images

podman search nginx
podman pull registry.access.redhat.com/ubi9/ubi
podman images
podman rmi IMAGE_ID

Volumes (data outside the container)

podman volume create appdata
podman run -d --name app -v appdata:/data -p 8080:8080 IMAGE
podman volume ls; podman volume inspect appdata

Rootless basics

id -u            # ports < 1024 are not bindable without a setting
sysctl net.ipv4.ip_unprivileged_port_start=80   # persistent: /etc/sysctl.d/

Data lives in ~/.local/share/containers, never in /var/lib unless running as root.

Start at boot (quadlet, RHEL 9+/10)

~/.config/containers/systemd/web.container:

[Unit]
Description=nginx web
[Container]
Image=docker.io/library/nginx
PublishPort=8080:80
[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now web.service
loginctl enable-linger eric      # survives logout

Verify

podman ps; curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080