TL;DR — Quick Summary

Podman runs OCI containers without a daemon and without root. Drop-in Docker replacement with pods, rootless mode, and Kubernetes YAML generation.

Podman is Docker without the baggage. No daemon running as root, no socket to secure, no privilege escalation risks. Same commands, same Dockerfiles, same images — but each container runs as your regular user.

Installation

# Fedora/RHEL
sudo dnf install podman

# Ubuntu/Debian
sudo apt install podman

# Arch Linux
sudo pacman -S podman

# macOS (uses a VM)
brew install podman
podman machine init
podman machine start

Basic Usage (Same as Docker)

# Run a container
podman run -it ubuntu bash
podman run -d -p 8080:80 nginx

# Build from Dockerfile
podman build -t myapp .

# List containers/images
podman ps -a
podman images

# Push to registry
podman push myapp docker.io/user/myapp

# Docker compatibility alias
alias docker=podman

Pods (Container Groups)

# Create a pod with port mapping
podman pod create --name webapp -p 8080:80

# Add containers to the pod
podman run -d --pod webapp --name frontend nginx
podman run -d --pod webapp --name backend node:20

# Containers share localhost
# frontend can reach backend at localhost:3000

# List pods
podman pod ls

# Stop/remove a pod (and all its containers)
podman pod stop webapp
podman pod rm webapp

Kubernetes Integration

# Generate Kubernetes YAML from running pod
podman generate kube webapp > deployment.yaml

# Play Kubernetes YAML locally
podman play kube deployment.yaml

# Stop resources from YAML
podman play kube --down deployment.yaml

Rootless Security

# Check if running rootless
podman info --format '{{.Host.Security.Rootless}}'
# Output: true

# No daemon socket to protect
# No root process running
# Each container is a child process of your user

Comparison

FeaturePodmanDockercontainerd
DaemonNoYesYes
RootlessDefaultOpt-inOpt-in
CLIdocker-compatdockerctr/nerdctl
PodsYesNoNo
K8s YAML genYesNoNo
Composepodman-composedocker composenerdctl
SystemdGenerate unitsNoNo
OCI compliantYesYesYes

Summary

  • Podman is a daemonless, rootless Docker alternative — alias docker=podman
  • Same CLI, Dockerfiles, and OCI images as Docker
  • Pods group containers sharing a network namespace (like Kubernetes)
  • Generate Kubernetes YAML from running containers
  • No root daemon or socket — better security by default