Podman

Summary

Podman is the raw container engine used for direct container work on Fedora Atomic. Use it when you want to pull images, create containers, expose ports, mount directories, inspect state, and manage workloads that behave more like services than temporary development shells.

Why this matters

  • Podman is the correct layer for containerised services and lower-level container workflows
  • understanding Podman helps you troubleshoot what happens underneath Toolbox and other container-based tools
  • if you use the wrong container model, you can expose the wrong files, map the wrong ports, or create containers that are hard to reason about later

Environment / Scope

ItemValue
PlatformFedora SWAY Atomic
Main toolpodman
Best use for this notebeginner to junior practical workflow
Safe to test?yes, in a lab
Related areacontainers / homelab / service testing

Key concepts

  • Image - a reusable template used to create containers
  • Container - a running or stopped instance created from an image
  • Mount / volume - a host path made available inside the container
  • Port mapping - exposing a port from the container to the host
  • Rootless workflow - running containers as your normal user instead of defaulting to root-level habits

When to use Podman vs Toolbox

Use caseBetter choiceWhy
You need direct container controlPodmanyou manage the image, mounts, ports, and lifecycle yourself
You want a dev shell with familiar toolingToolboxit is more convenient for day-to-day development work
You want to run a service or test a containerised appPodmanthat is exactly what the raw engine is for

Steps / Workflow

Workflow 1: make an isolated container

  1. Pull the image.
  2. Verify that the image exists locally.
  3. Create the container without starting it yet.
  4. Check that the container exists.
  5. Start it interactively.
podman pull ubuntu:24.04
podman images
podman create --name ubuntu-24 ubuntu:24.04 bash
podman ps -a
podman start -ai ubuntu-24

Workflow 2: make a container with access to your home directory

Use this only when you intentionally want the container to work against files in your user environment.

podman create --name ubuntu-24 --userns=keep-id -v $HOME:$HOME -w $HOME ubuntu:24.04 bash
podman start -ai ubuntu-24

Before using a home-directory mount

This is no longer an isolated environment. The container can read and modify files in the mounted path, so use this deliberately and only when that behaviour is actually wanted.

Commands / Examples

Basic commands

podman pull ubuntu:24.04
podman images
podman ps
podman ps -a
podman logs ubuntu-24
podman rm ubuntu-24

Important flags from the workflow

PartMeaning
--name ubuntu-24gives the container a readable name
-aattach to the container output
-ikeep input open so you can interact with it
--userns=keep-idkeep your user identity mapping inside the container
-v $HOME:$HOMEmount your home directory from host to container
-w $HOMEset the working directory inside the container

Example output

CONTAINER ID  IMAGE                COMMAND  STATUS                     NAMES
abc123def456  ubuntu:24.04         bash     Exited (0) 10 seconds ago  ubuntu-24

Verification

CheckExpected result
Image existsvisible in podman images
Container existsvisible in podman ps -a
Interactive start workscontainer shell opens without errors
Mounted path behaves as expectedexpected files are visible and writable only when intended

Verification commands:

podman images
podman ps -a
podman inspect ubuntu-24

Pitfalls / Troubleshooting

ProblemLikely causeWhat to check
Container is missingimage not pulled or container removedpodman images, podman ps -a
Container starts then exitscommand finishes immediatelystartup command, container logs
Files get modified unexpectedlyhost path was mounted intentionally or by mistake-v usage, target path
Wrong ownership on mounted filesuser mapping mismatch--userns=keep-id, current user

Watch out

The most important difference between the two workflows is isolation. A container with a host mount is not just a safe disposable shell anymore.

Key takeaways

  • Podman is the right tool when you need direct control over containers
  • create plus start helps you see each stage of container lifecycle more clearly than jumping straight into a one-liner
  • mounting $HOME is useful, but it changes the risk profile and should not be treated like an isolated container

Official documentation