Nan[root] and Net[route]

โ€œWe can only see a short distance ahead, but we can see plenty there that needs to be done.โ€ - Alan Turing

Jakarta/Indonesia:
Loading...

By Ferdinan Rizky โ€ข Sep 8, 2025 - 6 minute read

Podman Essentials: Perintah Dasar, Contoh, dan Tips Praktis

Kenalan dulu sama Podman โ€” singkatan dari Pod Manager. ๐Ÿš€
Podman lahir dari dapurnya Red Hat sebagai jawaban atas keterbatasan Docker.
Kalau Docker pakai satu daemon besar yang jadi bos semua container, Podman justru bilang:
โ€œnggak perlu bos, biar tiap container jalan mandiri aja.โ€ โœจ

Bedanya jelas:

  • Docker โ†’ semua container dikendalikan oleh Docker daemon yang butuh akses root. Kalau daemon mati, semua container ikutan mati.
  • Podman โ†’ container langsung jadi proses Linux biasa, bisa dijalankan tanpa root (rootless mode). Lebih aman, lebih ringan, dan lebih dekat dengan filosofi Linux.

Nah, ada satu hal keren: Podman bukan cuma โ€œDocker tanpa daemonโ€. Podman juga punya fitur penting buat yang mau naik level ke dunia orchestration:

  • Pods โ†’ sekumpulan container dalam satu paket (mirip banget sama pod di Kubernetes).
  • Export YAML โ†’ pakai podman generate kube buat bikin file YAML yang langsung bisa dipakai di Kubernetes.
  • Systemd integration โ†’ container bisa dibuat jadi service systemd, cocok buat workload yang butuh jalan otomatis.

Singkatnya, Podman itu:

  • Bisa pull, build, dan hapus image kayak Docker.
  • Bisa run, stop, restart, inspect container kayak Docker.
  • Bisa bikin pods biar rasain vibes Kubernetes sejak awal.
  • Bisa jalan tanpa root jadi lebih aman.
  • Dan yes, command Docker bisa diganti langsung dengan Podman.

Cheat sheet ini bakal ngebantu kamu ngerti perintah dasar Podman lengkap dengan contoh dan output-nya.
Jadi kalau nanti kamu kepikiran mau main di level Kubernetes, fondasinya udah siap. ๐Ÿ’ช


Repositori Image

Tarik image dari registry

podman pull nginx

Contoh output:

Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
Copying blob sha256:ec3f3ff9... done
Copying config sha256:4bb46517cac3... done
Writing manifest to image destination
Storing signatures

Cari image di registry

podman search httpd

Contoh output:

INDEX       NAME                        DESCRIPTION               STARS   OFFICIAL
docker.io   docker.io/library/httpd     The Apache HTTP Server    3400    [OK]

Lihat daftar image lokal

podman images

Contoh output:

REPOSITORY                 TAG      IMAGE ID       CREATED       SIZE
docker.io/library/nginx    latest   4bb46517cac3   2 weeks ago   142 MB

Hapus image

podman rmi nginx

Build Image

Build image dari Containerfile/Dockerfile

podman build -t myapp:latest .

Contoh output:

STEP 1/3: FROM fedora:34
STEP 2/3: RUN dnf -y install httpd
STEP 3/3: CMD /usr/sbin/httpd -DFOREGROUND
COMMIT myapp:latest
--> a1b2c3d4e5f6
Successfully tagged localhost/myapp:latest

Build dengan nama + tag khusus

podman build -t quay.io/username/myapp:v1 .

Commit container menjadi image

podman commit webserver myimage:latest

Container

Jalankan container interaktif

podman run -it fedora /bin/bash

Contoh output:

[root@a1b2c3d4e5f6 /]#

Jalankan container dengan nama + port mapping

podman run --name webserver -d -p 8080:80 nginx

Contoh output:

a1b2c3d4e5f6a7b8c9d0e1f2g3h4i5j6

Daftar container

podman ps

Contoh output:

CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS            PORTS                 NAMES
a1b2c3d4e5f6  docker.io/library/nginx:latest  nginx -g 'daemon off'  5 minutes ago  Up 5 minutes ago  0.0.0.0:8080->80/tcp  webserver

Hentikan, mulai, hapus container

podman stop webserver
podman start webserver
podman rm webserver

Restart container

podman restart webserver

Inspect container

podman inspect webserver

Contoh output (potongan):

[
  {
    "Id": "a1b2c3d4e5f6...",
    "Name": "webserver",
    "Image": "docker.io/library/nginx:latest",
    "State": {
      "Status": "running",
      "StartedAt": "2025-09-08T10:22:00.123456789Z"
    }
  }
]

Lihat log container

podman logs webserver

Contoh output:

/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Starting nginx...

Masuk ke dalam container

podman exec -it webserver /bin/bash

Sistem File & Volume

Salin file host โ†’ container

podman cp index.html webserver:/usr/share/nginx/html/

Salin file container โ†’ host

podman cp webserver:/etc/nginx/nginx.conf ./nginx.conf

Buat volume

podman volume create myvolume

Contoh output:

myvolume

Daftar volume

podman volume ls

Contoh output:

DRIVER      VOLUME NAME
local       myvolume

Inspect volume

podman volume inspect myvolume

Contoh output (potongan):

[
  {
    "Name": "myvolume",
    "Mountpoint": "/var/lib/containers/storage/volumes/myvolume/_data",
    "Driver": "local"
  }
]

Networking

Jalankan container dengan port mapping

podman run -d -p 8080:80 nginx

Daftar network

podman network ls

Contoh output:

NETWORK ID    NAME        DRIVER
abcd1234efgh  podman      bridge
efgh5678ijkl  mynet       bridge

Buat network baru

podman network create mynet

Hapus network

podman network rm mynet

Pods

Pod adalah sekumpulan container yang berbagi namespace (jaringan, PID, dsb), mirip dengan pod di Kubernetes.

Buat pod

podman pod create --name mypod -p 8080:80

Contoh output:

e3f4g5h6i7j8k9l0

Jalankan container dalam pod

podman run -dt --pod mypod nginx

Daftar pod

podman pod ps

Contoh output:

POD ID        NAME     STATUS   CREATED         INFRA ID      # OF CONTAINERS
1a2b3c4d5e6f  mypod    Running  2 minutes ago   7h8i9j0k1l2m   2

Inspect pod

podman pod inspect mypod

Monitoring & Resource

Statistik resource container

podman stats

Contoh output:

CONTAINER ID  NAME       CPU %   MEM USAGE / LIMIT   MEM %   NET IO   BLOCK IO
a1b2c3d4e5f6  webserver  0.15%   12.3MiB / 2GiB      0.60%   1.2kB    0B

Lihat proses dalam container

podman top webserver

Contoh output:

UID   PID   PPID   C   STIME   TTY   TIME     CMD
root  1234  1      0   10:22   ?     00:00:00 nginx: master process nginx -g daemon off;
nginx 1256  1234   0   10:22   ?     00:00:00 nginx: worker process

Event container

podman events

Disk usage Podman

podman system df

Contoh output:

TYPE           TOTAL   ACTIVE   SIZE     RECLAIMABLE
Images         3       2        300MB    120MB (40%)
Containers     2       1        50MB     20MB (40%)
Volumes        1       1        5MB      0B (0%)

Lain-lain

Versi & info Podman

podman version

Contoh output:

Version:      4.2.0
API Version:  4.2.0
Go Version:   go1.18.6
Built:        Thu Jan 12 22:10:00 2025
OS/Arch:      linux/amd64
podman info

Bantuan Podman

podman --help

Bersihkan resource yang tidak digunakan

podman system prune

Contoh output:

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:
a1b2c3d4e5f6
Deleted Images:
sha256:4bb46517cac3...

Tips Praktis Podman

๐Ÿ’ก Beberapa trik dan best practice agar penggunaan Podman lebih efisien:

  • Kompatibilitas Docker
    Hampir semua perintah Docker bisa diganti langsung dengan podman.
    Misalnya: docker run โ†’ podman run.

  • Menjaga sistem tetap bersih
    Gunakan:

    podman system prune
    

    untuk menghapus container, network, image, dan cache yang tidak terpakai.

  • Gunakan Pods untuk simulasi Kubernetes
    Podman mendukung konsep pods (sekumpulan container dalam satu namespace).
    Cocok untuk belajar Kubernetes secara lokal.

  • Ekspor konfigurasi ke Kubernetes YAML
    Buat file YAML dari container atau pod untuk langsung dipakai di Kubernetes:

    podman generate kube mypod > mypod.yaml
    
  • Gunakan rootless mode
    Jalankan Podman tanpa root (rootless) untuk keamanan yang lebih baik.
    Contoh:

    podman run --rm -it alpine sh
    
  • Monitoring resource
    Gunakan podman stats untuk memantau penggunaan CPU, memori, dan I/O container secara live.

  • Logging yang rapi
    Redirect log container ke file agar mudah dianalisis:

    podman logs webserver > webserver.log
    
  • Volume untuk data persisten
    Selalu gunakan volume untuk menyimpan data penting agar tidak hilang saat container dihapus:

    podman volume create mydata
    podman run -v mydata:/var/lib/mysql mysql
    
  • Network khusus
    Buat network khusus untuk mengisolasi container tertentu:

    podman network create backend
    podman run --network backend ...
    
  • Integrasi dengan Systemd
    Podman bisa generate service systemd agar container otomatis jalan saat boot:

    podman generate systemd --name webserver > /etc/systemd/system/webserver.service
    

Kesimpulan

Podman adalah alternatif modern untuk Docker yang ringan, aman, dan tanpa daemon.
Dengan perintah seperti podman run, podman build, podman ps, podman logs, podman network, dan podman pod,
developer maupun sysadmin dapat mengelola container dengan mudah.

Podman memberi kekuatan CLI Docker, dengan keamanan dan integrasi Linux yang lebih baik ๐Ÿš€