Knowledge

Podman

Daemonless, rootless OCI container engine with an optional desktop GUI. Fully open source, but a harder first-time experience than Docker Desktop.

appcontainerspodmanossinfrastructure

Draft: not yet reviewed/published by a human.

Podman

Podman is a daemonless, Open Container Initiative (OCI) container engine. It runs containers without a long-lived root daemon, and it is designed to run rootless by default. There are two things people mean by "Podman":

Owners Club position: fully OSS and technically excellent, but not the recommended first runtime for beginners. Use it when licence cleanliness or rootless-by-default matters more than the smoothest possible first install.

At a glance

Field Value
Home page https://podman.io/ (GUI: https://podman-desktop.io/)
Repository https://github.com/podman-container-tools/podman
GUI repository https://github.com/podman-desktop/podman-desktop
OSS? Yes — engine and desktop GUI
License Apache-2.0 (both projects)
Platforms Linux (native), macOS, Windows (via a managed Linux VM / podman machine)
Daemon None — containers are child processes of the CLI
Rootless Yes, the default posture
Docker compatibility podman CLI is largely Docker-compatible; Docker Compose works via podman compose

Why it is on our list

  • No proprietary desktop licence. This is the concrete reason to prefer it over Docker Desktop in a company that exceeds Docker's free-tier thresholds.
  • Rootless by default. Containers do not run as root on the host, which is a real security improvement rather than a checkbox.
  • It speaks Docker. Images, Dockerfiles, and most commands carry over, so it is not a rewrite — it is a substitution.

Why it is not our beginner recommendation

  • On macOS and Windows you run containers inside a managed VM (podman machine). You must create and start that machine before anything works — an extra concept Docker Desktop hides.
  • Docker socket compatibility is an explicit opt-in. Tools that hardcode /var/run/docker.sock (including some agent and dev-container setups) need that socket enabled and pointed at Podman, and when it fails it fails confusingly.
  • Small differences in networking, volume permissions, and Compose behaviour produce errors that beginners cannot distinguish from "containers are broken".

That trade-off is summarised in Choosing a container runtime.

Install and first run

Linux — install from your distribution's package manager; Podman is packaged nearly everywhere.

macOS / Windows — install Podman Desktop from https://podman-desktop.io/, then create and start its machine before running a container.

Sanity check:

podman run --rm hello-world

Tutorials index: https://docs.podman.io/en/latest/Tutorials.html.

Configuration worth knowing

  • podman machine is the macOS/Windows lifecycle: initialise, start, stop, and inspect the Linux VM that actually runs your containers. If a container "cannot start", check the machine first.
  • Docker socket compatibility. Podman can expose a Docker-compatible socket so Docker-expecting tools connect. Enable it deliberately; it is what makes dev containers and agent frameworks work.
  • podman compose provides the Compose workflow for multi-container setups.

Common pitfalls

  • Forgetting to start the machine on macOS/Windows, then reading the error as a Podman bug.
  • Assuming a Docker socket exists. It does not until you enable it, and bind-mounting a missing socket into a container produces a very unhelpful failure.
  • Host service addresses differ. Inside Podman Desktop containers a host service is reached at host.containers.internal, not Docker's host.docker.internal. Both are often mapped when a devcontainer is written carefully — but not by accident.
  • Rootless volume permissions. Bind-mounted host directories owned by your user can look inaccessible inside the container because of UID mapping. This is a feature, not a bug; use user-namespace-aware mounts or adjust ownership intentionally.
  • Running Podman and Docker Desktop simultaneously and then wondering which runtime answered.

Tips and tricks

  • If you are learning containers for the first time, use Docker Desktop; if you are replacing it for licensing reasons, move to Podman Desktop and budget an evening for the socket details.
  • Keep the machine's disk size generous: model weights are large and resizing later is annoying.
  • Because Podman is daemonless, podman commands behave more like ordinary processes — which makes debugging on Linux noticeably more pleasant than fighting a daemon.

Videos

Verified via YouTube oEmbed on 2026-10-28.

Related

Verification note: licences and repositories were read from the GitHub API on 2026-10-28; platform and rootless behaviour from the official Podman and Podman Desktop documentation.