Monday, September 21, 2026

Podman: The Complete Guide to Rootless, Daemonless Containers



Podman: The Complete Guide to Rootless, Daemonless Containers

Podman is an open-source container engine designed to build, run, manage, and deploy OCI containers and pods. It provides a Docker-compatible CLI experience while taking a fundamentally different approach: Podman is daemonless and can run containers rootlessly as a regular Linux user.

For developers, DevOps engineers, SREs, platform engineers, and administrators, Podman is particularly interesting when you want containerization without depending on a permanently running privileged daemon.


1. What is Podman?

Podman originally stands for Pod Manager.

It provides commands for:

  • Running containers
  • Building images
  • Managing images
  • Managing pods
  • Creating networks
  • Managing volumes
  • Running containers without root
  • Integrating containers with systemd
  • Running Kubernetes YAML locally
  • Working with OCI-compatible images and runtimes

A major design characteristic is that Podman is daemonless. Unlike the traditional Docker architecture, there isn't a central Docker daemon that all local container operations must go through.

Conceptually:

Traditional Docker-style model

User
  |
  v
Docker CLI
  |
  v
Docker Daemon
  |
  +---- Container
  +---- Container
  +---- Image
  +---- Network

Podman:

User
  |
  v
Podman CLI
  |
  +---- Container
  +---- Container
  +---- Pod
  +---- Image
  +---- Network

That architectural difference becomes especially important for rootless containers and systemd-based deployments.


2. Podman vs Docker


Podman is often introduced as a Docker alternative, but the distinction is more precise than simply saying "Docker without Docker."

FeaturePodmanDocker
DaemonDaemonlessDocker daemon
Rootless containersYesYes, with Docker rootless mode
CLI familiarityDocker-compatible styleNative
OCI containersYesYes
PodsNative conceptNot the primary abstraction
Kubernetes YAMLStrong integrationIndirect
systemd integrationExcellent with QuadletPossible, but different model
Docker ComposeVia external Compose providerNative Docker Compose ecosystem
Image ecosystemOCI/Docker registriesOCI/Docker registries
Windows/macOSPodman machineDocker Desktop/VM-based architecture
Enterprise Linux integrationStrongStrong

Podman itself describes its CLI as Docker-compatible enough to ease migration from other container engines.

The important point is:

Podman and Docker solve many of the same container-management problems, but their operational models differ.


3. Why Daemonless Architecture Matters

With Docker, the CLI normally communicates with the Docker daemon.

Podman doesn't require a permanently running central daemon for ordinary local container operations.

That can simplify:

  • Security boundaries
  • Rootless execution
  • Troubleshooting
  • Systemd integration
  • Server administration

Podman can also operate remotely when required, so "daemonless" does not mean Podman cannot expose a service/API model.


4. Rootless Containers

One of Podman's most important features is rootless container execution.

For example:

podman run --rm docker.io/library/alpine:latest \
  echo "Hello from Podman"

You can run this as a normal user.

Podman's rootless mode uses Linux user namespaces. User mappings are typically configured using:

/etc/subuid
/etc/subgid

Podman documents subordinate UID/GID ranges as part of rootless configuration.

Conceptually:

Linux Host
│
├── User: shashwat
│
│   └── Rootless Podman
│       │
│       ├── Container A
│       ├── Container B
│       └── Container C
│
└── Other Users

Containers created by one rootless user are not automatically visible/manageable by another user or by root's Podman environment.


5. Why Rootless Matters for Security

Consider a traditional privileged container workflow:

Application
    |
Container
    |
Container Runtime
    |
Root privileges
    |
Host

With rootless Podman:

Application
    |
Container
    |
User Namespace
    |
Normal User
    |
Host

The security boundary is not magically perfect, but the container process is constrained by the privileges of the launching user.

Podman's documentation explicitly notes that rootless containers cannot have more privileges than the user who launched them.

This makes rootless execution particularly attractive for:

  • Developer workstations
  • CI runners
  • Shared Linux systems
  • Development servers
  • Build environments
  • Security-sensitive workloads

6. Installing Podman

On modern Ubuntu systems, Podman is available through the official Ubuntu repositories.

sudo apt update
sudo apt install -y podman

Then verify:

podman --version

And:

podman info

The official Podman installation documentation lists Ubuntu 20.10 and newer as having Podman available in the official repositories.

For your Ubuntu server environment, this is generally the first installation path I'd test before considering a third-party repository.


7. Your First Podman Container

Pull an image:

podman pull docker.io/library/nginx:latest

List images:

podman images

Run NGINX:

podman run -d \
  --name nginx \
  -p 8080:80 \
  docker.io/library/nginx:latest

Check:

podman ps

Then:

curl http://localhost:8080

Podman's official getting-started documentation uses the same basic workflow of pulling an image, listing images, and running a published HTTP container.


8. Essential Podman Commands

Images

podman images

Pull:

podman pull nginx

Remove:

podman rmi nginx

Inspect:

podman inspect nginx

Search:

podman search nginx

The full registry name is preferable when you want to remove ambiguity:

podman pull docker.io/library/nginx

Podman's documentation specifically recommends using fully qualified image names when appropriate.


9. Container Lifecycle

Create:

podman create --name web nginx

Start:

podman start web

Stop:

podman stop web

Restart:

podman restart web

Remove:

podman rm web

List running containers:

podman ps

List everything:

podman ps -a

View logs:

podman logs web

Follow logs:

podman logs -f web

Execute a command:

podman exec -it web /bin/bash

10. Running Interactive Containers

For troubleshooting:

podman run --rm -it alpine /bin/sh

Now:

cat /etc/os-release

or:

ps

Exit:

exit

Because of --rm, the container is automatically removed after it exits.


11. Container Ports

Podman supports the familiar:

-p HOST_PORT:CONTAINER_PORT

Example:

podman run -d \
  --name web \
  -p 8080:80 \
  nginx

Architecture:

Browser
   |
   | TCP 8080
   v
Linux Host
   |
   | Port mapping
   v
Podman Container
   |
   | TCP 80
   v
NGINX

Podman's --publish option maps container ports onto host ports.


12. Volumes

Containers are ephemeral by design.

Persistent data should normally live outside the container's writable layer.

Create a volume:

podman volume create nginx-data

Use it:

podman run -d \
  --name nginx \
  -v nginx-data:/usr/share/nginx/html \
  nginx

List volumes:

podman volume ls

Inspect:

podman volume inspect nginx-data

Remove:

podman volume rm nginx-data

13. Bind Mounts

You can also mount host directories.

mkdir -p ~/web

podman run -d \
  --name nginx \
  -p 8080:80 \
  -v ~/web:/usr/share/nginx/html:Z \
  nginx

On SELinux-enabled systems, appropriate labeling options such as :Z or :z can matter.


14. Podman Pods

This is where Podman becomes particularly interesting.

Unlike Docker's traditional container-centric model, pods are a native Podman abstraction.

Create a pod:

podman pod create \
  --name webpod \
  -p 8080:80

Run a container inside it:

podman run -d \
  --pod webpod \
  nginx

List pods:

podman pod ls

Inspect:

podman pod inspect webpod

Stop:

podman pod stop webpod

Remove:

podman pod rm webpod

Conceptually:

Pod
│
├── Infra container
│
├── NGINX container
│
├── Application container
│
└── Sidecar container

Containers inside the same pod can share networking and other namespaces depending on configuration.


15. Why Pods Are Useful

Consider an application:

Application
     |
     +---- Main application
     |
     +---- Logging sidecar
     |
     +---- Metrics exporter

Instead of treating these as completely unrelated containers, you can group them into a Podman pod.

This resembles the Kubernetes pod model.

That makes Podman particularly useful for developers who want to understand Kubernetes concepts locally.


16. Building Images

Podman can build container images.

Create:

myapp/
├── Containerfile
└── app.py

Example Containerfile:

FROM python:3.12-slim

WORKDIR /app

COPY app.py .

CMD ["python", "app.py"]

Build:

podman build -t myapp:1.0 .

Run:

podman run --rm myapp:1.0

Podman uses Buildah internally for image creation and shares image storage with Buildah.


17. Dockerfile vs Containerfile

Podman commonly uses:

Containerfile

But Dockerfile syntax is also widely supported.

For example:

FROM ubuntu:24.04

RUN apt-get update && \
    apt-get install -y nginx && \
    rm -rf /var/lib/apt/lists/*

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

Build:

podman build -t my-nginx .

The container image itself follows OCI-compatible conventions.


18. Podman and Buildah

The relationship is roughly:

Buildah
   |
   | Build images
   v
Container Image
   |
   v
Podman
   |
   +---- Run
   +---- Manage
   +---- Network
   +---- Volumes
   +---- Pods

A common Red Hat ecosystem pattern is:

Buildah → Build
Podman  → Run
Skopeo  → Copy/Inspect Images

This separation can be useful in enterprise container pipelines.


19. Podman Networking

Podman supports container networks.

Create:

podman network create appnet

Run:

podman run -d \
  --name redis \
  --network appnet \
  redis

Another container:

podman run -it \
  --network appnet \
  alpine

Podman supports multiple networking modes, including private networking, host networking, and rootless networking using pasta.


20. Rootless Networking

Rootless networking has additional considerations because an unprivileged user cannot directly configure networking in exactly the same way as root.

Current Podman documentation describes pasta as the default rootless networking mechanism in current configurations.

This is one reason why networking behavior can sometimes differ between:

sudo podman ...

and:

podman ...

Avoid mixing rootful and rootless workflows unless you understand the consequences.


21. Rootful vs Rootless Podman

Rootful

sudo podman ps

Data typically lives under system-level container storage.

Rootless

podman ps

Data is associated with the user.

Podman's default rootless storage is under the user's container-storage hierarchy, while rootful storage defaults to /var/lib/containers/storage.

A common administration mistake is:

podman images

followed by:

sudo podman images

and wondering why the image lists are different.

They are different container-storage contexts.


22. Podman Compose

Podman supports:

podman compose

But an important detail is that this command is a wrapper around an external Compose provider such as docker-compose or podman-compose; it is not itself the full Compose implementation.

For example:

services:
  web:
    image: nginx
    ports:
      - "8080:80"

  redis:
    image: redis

Then:

podman compose up -d

Check:

podman ps

This makes migrating many development workflows from Docker Compose relatively straightforward.


23. Podman and Kubernetes

One of Podman's strongest features is its Kubernetes integration.

You can run Kubernetes YAML using:

podman kube play deployment.yaml

The current command is:

podman kube play

and podman play kube is an alias.

For example:

apiVersion: v1
kind: Pod

metadata:
  name: nginx-pod

spec:
  containers:
    - name: nginx
      image: nginx:latest
      ports:
        - containerPort: 80

Run:

podman kube play nginx.yaml

This creates the corresponding Podman resources.


24. Kubernetes YAML → Podman

This creates an interesting local development workflow:

Kubernetes YAML
       |
       v
podman kube play
       |
       v
Podman Pod
       |
       +---- Container
       +---- Container

Podman currently supports several Kubernetes resource kinds through kube play, including Pods, Deployments, PVCs, ConfigMaps, Secrets, DaemonSets, and Jobs, with support depending on the resource/field.

However:

Podman is not a Kubernetes cluster.

It doesn't reproduce Kubernetes control-plane scheduling, controllers, distributed reconciliation, etc.

It is useful for local execution and testing of supported Kubernetes-style YAML, not as a drop-in replacement for a Kubernetes control plane.


25. Podman → Kubernetes YAML

The reverse direction is also possible.

For example:

podman generate kube mycontainer

or:

podman generate kube mypod

This generates Kubernetes-style YAML based on Podman containers/pods.

That gives you a useful workflow:

Podman
  |
  | develop locally
  v
Container / Pod
  |
  | podman generate kube
  v
Kubernetes YAML
  |
  v
Kubernetes

This is particularly useful for experimentation and migration workflows, although generated YAML should still be reviewed before production Kubernetes deployment.


26. Podman + systemd

This is one of the most powerful Podman features for Linux servers.

Instead of manually running:

podman run ...

you can integrate containers with:

systemd

Podman provides Quadlet for defining containers, pods, volumes, networks and related resources declaratively for systemd.

Conceptually:

Quadlet
   |
   v
systemd
   |
   v
Podman
   |
   v
Container

27. Example Quadlet Container

Create:

~/.config/containers/systemd/nginx.container

Example:

[Unit]
Description=NGINX Container

[Container]
Image=docker.io/library/nginx:latest
ContainerName=nginx
PublishPort=8080:80

[Service]
Restart=always

[Install]
WantedBy=default.target

Then:

systemctl --user daemon-reload

Start:

systemctl --user start nginx.service

Check:

systemctl --user status nginx.service

Quadlet files are translated into systemd units through Podman's systemd generator.


28. Why Quadlet Is Important

For Linux server workloads, you can effectively treat containers like native services.

Instead of:

podman run ...

every time the server boots, you have:

systemd
   |
   +---- nginx.service
   |
   +---- redis.service
   |
   +---- application.service

This is especially attractive for:

  • Small production servers
  • Home labs
  • Edge servers
  • AI servers
  • Monitoring systems
  • Internal services
  • Single-node application stacks

29. Rootless systemd Containers

A particularly useful pattern is:

Normal Linux User
       |
       v
systemd --user
       |
       v
Quadlet
       |
       v
Rootless Podman
       |
       v
Container

This lets you run persistent services without giving the application administrator full root privileges.

For long-running services, you should also understand user lingering:

loginctl enable-linger $USER

This allows the user's systemd instance to remain available after logout, depending on the system's configuration.


30. Podman Security

Podman's security model can combine several Linux security mechanisms:

  • User namespaces
  • SELinux
  • AppArmor
  • Seccomp
  • Linux capabilities
  • cgroups
  • Read-only filesystems
  • Device restrictions

Avoid using:

--privileged

unless you have a specific, justified requirement.

Podman's documentation notes that privileged containers disable or weaken multiple isolation/security mechanisms and should generally be avoided.

A better approach is usually to grant only what the application actually needs.


31. Capabilities

Linux capabilities allow fine-grained privilege assignment.

Instead of:

--privileged

you might use:

--cap-add=NET_ADMIN

or remove unnecessary capabilities:

--cap-drop=ALL

and selectively add required capabilities.

This follows the principle:

Minimum privilege required to perform the workload.


32. Health Checks

Podman supports container health checks.

Example:

podman run -d \
  --name web \
  -p 8080:80 \
  --health-cmd 'curl -f http://127.0.0.1:80 || exit 1' \
  --health-interval 30s \
  --health-timeout 5s \
  --health-retries 3 \
  nginx

Inspect:

podman inspect web

Health checks can become an important component of service automation and monitoring.


33. Registries

Podman works with container registries.

Examples include:

Docker Hub
Quay.io
GitHub Container Registry
Private registries
Enterprise registries

Login:

podman login registry.example.com

Pull:

podman pull registry.example.com/myteam/myapp:1.0

Push:

podman push \
  myapp:1.0 \
  registry.example.com/myteam/myapp:1.0

Registry configuration is controlled through Podman's container configuration, including registries.conf.


34. Image Security

In production, don't blindly execute:

podman pull something

and assume the image is trustworthy.

Use:

  • Trusted registries
  • Immutable version tags
  • Image digests
  • Image scanning
  • Signature verification
  • Minimal base images
  • SBOMs
  • Regular rebuilds

For example:

nginx:latest

is mutable.

A digest identifies a specific image content:

nginx@sha256:...

For reproducible production deployments, digests can be preferable to floating tags.


35. Podman Architecture

A simplified architecture looks like this:

                     Linux Host
┌──────────────────────────────────────────────┐
│                                              │
│                 Podman CLI                   │
│                      │                       │
│                      ▼                       │
│              Container Management            │
│                      │                       │
│       ┌──────────────┼──────────────┐        │
│       ▼              ▼              ▼        │
│   Containers       Pods          Images       │
│       │              │              │        │
│       └──────────────┼──────────────┘        │
│                      ▼                       │
│               OCI Runtime                   │
│              crun / runc                    │
│                      │                       │
│                      ▼                       │
│              Linux Kernel                   │
│                                              │
└──────────────────────────────────────────────┘

Podman can use an OCI-compatible runtime; current documentation notes crun as the default runtime on systems using cgroup v2 where configured accordingly, while runc is another supported runtime.


36. Podman + conmon

Podman also uses conmon, the container monitor.

Simplified:

Podman
   |
   v
conmon
   |
   v
OCI Runtime
   |
   v
Container Process

Conmon watches the container's primary process and handles things such as exit status and terminal attachment.

This contributes to Podman's daemonless model.


37. Podman Storage

Podman relies on container storage mechanisms to maintain:

Images
Layers
Container writable layers
Volumes
Metadata

Rootful default storage:

/var/lib/containers/storage

Rootless storage is normally under the user's home/XDG data hierarchy.

Useful commands:

podman system df

and:

podman info

38. Cleaning Podman

See disk usage:

podman system df

Remove stopped containers:

podman container prune

Remove unused images:

podman image prune

More aggressive cleanup:

podman system prune

Be careful with aggressive cleanup on production systems.


39. Environment Variables

Example:

podman run -d \
  --name app \
  -e APP_ENV=production \
  -e DATABASE_HOST=db \
  myapp:1.0

Or:

podman run --env-file=.env myapp:1.0

For production secrets, avoid committing .env files into Git.

Use an appropriate secret-management solution.


40. Podman Secrets

Podman provides secret-management functionality for containers.

Conceptually:

Secret
   |
   v
Podman
   |
   v
Container

This is preferable to embedding credentials directly into an image:

ENV DATABASE_PASSWORD=mysecret

Never put production credentials into:

  • Dockerfiles
  • Containerfiles
  • Git repositories
  • Public image layers

41. Podman Auto-Updates

Podman supports mechanisms for updating containers based on image changes, including integration with systemd/Quadlet workflows.

This can support patterns such as:

Registry
   |
   | New image
   v
Podman
   |
   v
Update
   |
   v
Restart service

But automatic updates should be implemented carefully in production.

Blindly replacing production workloads whenever a latest image changes is not a deployment strategy.

A controlled pipeline is preferable:

Build
  ↓
Test
  ↓
Scan
  ↓
Approve
  ↓
Tag
  ↓
Deploy

42. Podman in CI/CD

Podman fits well into CI/CD pipelines.

Example:

Git Push
   |
   v
CI Runner
   |
   +---- podman build
   |
   +---- Security Scan
   |
   +---- Tests
   |
   +---- podman push
   |
   v
Container Registry
   |
   v
Deployment

A CI runner can build OCI images without requiring a traditional Docker daemon.


43. Podman for Microservices

Consider:

Frontend
   |
   v
API
   |
   +---- PostgreSQL
   |
   +---- Redis
   |
   +---- Worker

Podman can run the complete stack:

Podman
│
├── frontend
├── api
├── postgres
├── redis
└── worker

For development, Compose can simplify orchestration.

For a single Linux server, Quadlet/systemd can be an excellent operational model.

For a large multi-node environment, Kubernetes or another orchestrator may be more appropriate.


44. Podman vs Kubernetes

This distinction is critical.

Podman

Primarily:

Container Engine

Kubernetes

Primarily:

Container Orchestration Platform

Kubernetes provides:

  • Cluster scheduling
  • Controllers
  • Service discovery
  • Deployments
  • StatefulSets
  • DaemonSets
  • ConfigMaps
  • Secrets
  • Ingress
  • Operators
  • Cluster autoscaling
  • Distributed reconciliation

Podman does not attempt to replicate the entire Kubernetes control plane.

A useful architecture is therefore:

Developer Laptop
      |
      v
    Podman
      |
      v
Local Testing
      |
      v
Kubernetes
      |
      v
Production Cluster

45. Podman vs Docker vs Kubernetes

Think of the technologies as different layers:

                 APPLICATION
                      │
          ┌───────────┴───────────┐
          │                       │
      Container               Container
          │                       │
          └───────────┬───────────┘
                      │
             Container Engine
             ┌────────┴────────┐
             │                 │
           Podman            Docker
             │                 │
             └────────┬────────┘
                      │
                 Kubernetes
                 Orchestrates
                 many nodes

They're not always direct substitutes.


46. Podman on Windows and macOS

Podman can run on Windows and macOS, but Linux containers require a Linux environment.

Podman provides a Podman machine abstraction for this.

On macOS:

podman machine init
podman machine start
podman info

On Windows, Podman uses a WSLv2-backed machine for its container environment.

So:

Windows
   |
   v
WSLv2 / Podman Machine
   |
   v
Podman
   |
   v
Linux Containers

47. Troubleshooting Podman

Check installation

podman --version

Detailed system information

podman info

Check containers

podman ps -a

Check logs

podman logs <container>

Inspect configuration

podman inspect <container>

Check images

podman images

Check networks

podman network ls

Check volumes

podman volume ls

48. Rootless Troubleshooting

If rootless Podman behaves unexpectedly, check:

cat /etc/subuid
cat /etc/subgid

You can also inspect:

podman info

If the user does not have suitable subordinate UID/GID ranges, rootless containers may fail to operate correctly.

On some systems, storage/network dependencies such as fuse-overlayfs and rootless networking tools can also matter.


49. Common Podman Problems

Problem 1 — Image exists under root but not user

You ran:

sudo podman pull nginx

Then:

podman images

No image.

Reason: different storage contexts.


Problem 2 — Port already in use

bind: address already in use

Check:

sudo ss -lntp | grep 8080

Then choose another port:

-p 8081:80

Problem 3 — Rootless networking

Check:

podman info

and inspect network configuration.

Current Podman rootless networking uses pasta by default in the documented configuration.


Problem 4 — Permission denied on mounted directory

Check:

ls -ld /path/to/directory

For SELinux environments, check labeling and mount options.


Problem 5 — Container immediately exits

Run:

podman ps -a

Then:

podman logs <container>

and:

podman inspect <container>

Usually the container's primary process has exited.


50. Production Architecture with Podman

For a single Linux server:

                    Linux Server
                         │
                    systemd
                         │
                      Quadlet
                         │
          ┌──────────────┼──────────────┐
          │              │              │
       Web App         Redis        PostgreSQL
          │              │              │
          └──────────────┼──────────────┘
                         │
                       Podman

This is a very practical architecture for:

  • Home labs
  • Internal tools
  • AI servers
  • Small SaaS deployments
  • Monitoring stacks
  • Web applications
  • Edge servers

51. Podman + AI Server

For a local AI server, Podman can be used to isolate:

AI Server
│
├── Ollama
├── Open WebUI
├── PostgreSQL
├── Redis
├── FastAPI
├── ComfyUI
├── TTS service
└── Monitoring

For example:

Podman
│
├── ollama
│
├── open-webui
│
├── postgres
│
├── redis
│
├── fastapi
│
└── monitoring

With GPU workloads, device exposure and runtime configuration require additional consideration; Podman also supports CDI-based device selection in its Kubernetes YAML workflow.


52. A Practical Podman Project Structure

A clean project might look like:

myapp/
│
├── Containerfile
├── compose.yaml
├── .env
├── app/
│   ├── main.py
│   └── requirements.txt
│
├── quadlet/
│   └── myapp.container
│
└── k8s/
    └── deployment.yaml

This allows the same application to have multiple deployment representations:

Containerfile
     │
     ├── Podman
     │
     ├── Compose
     │
     ├── Quadlet/systemd
     │
     └── Kubernetes

53. Recommended DevOps Workflow

A mature Podman workflow could look like:

Developer
    │
    v
Git
    │
    v
Containerfile
    │
    v
Podman / Buildah
    │
    v
Image
    │
    v
Security Scan
    │
    v
Registry
    │
    v
Deployment
    │
    ├── Podman + Quadlet
    │
    └── Kubernetes

This keeps the image artifact separate from the deployment platform.


54. Important Best Practices

1. Prefer rootless when practical

podman ps

instead of automatically using:

sudo podman ps

2. Don't use latest blindly

Prefer:

myapp:1.4.2

or a digest.


3. Keep containers immutable

Don't manually modify production containers.

Instead:

Code
 ↓
Build
 ↓
Test
 ↓
Image
 ↓
Deploy

4. Don't bake secrets into images

Bad:

ENV PASSWORD=secret

Use secret-management mechanisms instead.


5. Avoid privileged containers

Use targeted capabilities and devices.


6. Use health checks

They make failure detection much easier.


7. Use Quadlet for long-running Linux services

Instead of maintaining large shell scripts containing:

podman run ...

use declarative Quadlet definitions and systemd.


8. Use Kubernetes when you actually need Kubernetes

Don't introduce Kubernetes simply because containers are involved.

For one server:

Podman + Quadlet

can be considerably simpler operationally.

For a large distributed platform:

Kubernetes

may provide the required orchestration capabilities.


55. Podman Cheat Sheet

Information

podman info
podman version

Images

podman images
podman pull IMAGE
podman build -t IMAGE .
podman rmi IMAGE
podman inspect IMAGE

Containers

podman ps
podman ps -a
podman run IMAGE
podman start CONTAINER
podman stop CONTAINER
podman restart CONTAINER
podman rm CONTAINER
podman logs CONTAINER
podman exec -it CONTAINER bash

Networks

podman network ls
podman network create NAME
podman network inspect NAME
podman network rm NAME

Volumes

podman volume ls
podman volume create NAME
podman volume inspect NAME
podman volume rm NAME

Pods

podman pod ls
podman pod create --name NAME
podman pod inspect NAME
podman pod stop NAME
podman pod rm NAME

Kubernetes

podman kube play app.yaml
podman kube down app.yaml
podman generate kube CONTAINER

Cleanup

podman system df
podman container prune
podman image prune
podman system prune

56. The Bigger Picture

Podman's real strength isn't simply:

"It's another Docker."

Its value is the combination of:

Daemonless
     +
Rootless
     +
OCI
     +
Pods
     +
systemd / Quadlet
     +
Kubernetes YAML
     +
Buildah ecosystem
     +
Linux-native operation

That combination makes it particularly attractive on Linux servers where you want containers without turning container management into a separate infrastructure platform.


57. Final Takeaway

Podman fits into the container ecosystem roughly like this:

                    CONTAINER ECOSYSTEM

        ┌─────────────────────────────────┐
        │          Container Image        │
        │       OCI / Docker Format       │
        └────────────────┬────────────────┘
                         │
              ┌──────────┴──────────┐
              │                     │
           Podman                 Docker
              │                     │
       ┌──────┼──────┐              │
       │      │      │              │
     Pods  Quadlet  Kube YAML       │
       │      │      │              │
       └──────┼──────┘              │
              │                     │
          systemd              Docker Compose
              │
              ▼
        Linux Workloads

If Docker is the familiar container engine, Podman is the Linux-native, daemonless, rootless-oriented alternative with particularly strong integration with pods, systemd, and Kubernetes-style workflows. Its architecture makes it especially compelling for developers, DevOps engineers, SREs, homelabs, edge deployments, and single-server production workloads.

Official documentation

Podman Documentation
Podman Official Site

No comments:

Post a Comment

Thank you for Commenting Will reply soon ......

Featured Posts

Podman: The Complete Guide to Rootless, Daemonless Containers

Podman: The Complete Guide to Rootless, Daemonless Containers Podman is an open-source container engine designed to build, run, manage, and...