A quick reference for Podman โ the daemonless container engine. Bookmark this page.
Container Lifecycle
# Run a container
podman run -d --name web -p 8080:80 nginx:alpine
podman run -it --rm fedora:39 bash # Interactive, auto-remove
podman run -d -v ./data:/data:Z nginx # Volume with SELinux label
# List containers
podman ps # Running
podman ps -a # All (including stopped)
podman ps --format "{{.Names}} {{.Status}}"
# Stop/start/restart
podman stop web
podman start web
podman restart web
# Remove
podman rm web
podman rm -f web # Force remove running container
podman rm -a # Remove all stopped containersImages
# Pull/push
podman pull docker.io/library/nginx:alpine
podman push localhost/myapp:v1 docker.io/myuser/myapp:v1
# Build
podman build -t myapp:v1 .
podman build -t myapp:v1 -f Containerfile .
podman build --no-cache -t myapp:v1 .
# List and manage
podman images
podman image prune # Remove dangling images
podman image prune -a # Remove all unused images
podman rmi nginx:alpinePods (Podman-specific)
# Create a pod (shared network namespace)
podman pod create --name my-pod -p 8080:80 -p 5432:5432
# Run containers in a pod
podman run -d --pod my-pod --name web nginx:alpine
podman run -d --pod my-pod --name db postgres:16
# List pods
podman pod list
podman pod inspect my-pod
# Manage pods
podman pod stop my-pod
podman pod start my-pod
podman pod rm -f my-podInspect and Debug
# Logs
podman logs web
podman logs -f web # Follow
podman logs --tail 50 web # Last 50 lines
# Execute command in container
podman exec -it web bash
podman exec web cat /etc/nginx/nginx.conf
# Inspect
podman inspect web
podman inspect web --format '{{.NetworkSettings.IPAddress}}'
# Resource usage
podman stats
podman top web # Processes in containerRootless Containers
# Run as non-root user (default in Podman)
podman run -d --name web -p 8080:80 nginx:alpine
# Check user namespace mapping
podman unshare cat /proc/self/uid_map
# Set subuid/subgid ranges
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USERPodman Compose
# Install
pip install podman-compose
# Use (same as docker-compose)
podman-compose up -d
podman-compose down
podman-compose logs -f
podman-compose psGenerate Kubernetes YAML
# Generate K8s YAML from running container
podman generate kube web > web-pod.yaml
# Generate from pod
podman generate kube my-pod > my-pod.yaml
# Play Kubernetes YAML with Podman
podman play kube web-pod.yaml
podman play kube --down web-pod.yaml # Tear downTips and Tricks
- Podman is a drop-in Docker replacement:
alias docker=podman - Use
podman system prune -ato reclaim disk space - Use
podman auto-updatewithio.containers.autoupdate=registrylabel - Rootless containers are more secure โ use them by default
- Use
podman machineon macOS/Windows for a Linux VM