0
Home  ›  DevOps  ›  Linux  ›  Tutorial

Podman: Alternatif Docker yang Aman dan Daemonless

Podman Container Engine

Docker sudah lama menjadi standar de facto untuk containerization. Tapi ada satu nama yang semakin populer di kalangan DevOps dan sysadmin: Podman. Dikembangkan oleh Red Hat, Podman menawarkan cara kerja container yang berbeda secara fundamental — tanpa daemon, tanpa hak akses root untuk pengguna biasa, dan kompatibel dengan sebagian besar perintah Docker. Artikel ini akan membahas Podman secara lengkap: apa itu, cara install, perbedaan dengan Docker, sampai penggunaannya di production.

Apa Itu Podman?

Podman adalah container engine open source yang dikembangkan Red Hat. Nama Podman sendiri berasal dari kata Pod Manager — karena konsep pod-nya yang diadopsi dari Kubernetes. Podman memungkinkan kamu menjalankan container dan pod tanpa memerlukan daemon di latar belakang. Setiap container dijalankan sebagai proses langsung oleh runtime (contohnya runc atau crun), sehingga lebih ringan dan lebih mudah di-debug.

Salah satu keunggulan utama Podman adalah sifatnya yang daemonless. Docker memerlukan daemon dockerd yang berjalan terus-menerus dan punya hak akses penuh ke sistem. Kalau daemon ini crash, semua container ikut bermasalah. Podman tidak punya masalah ini — setiap container adalah proses independen yang dikelola langsung oleh systemd atau user.

Podman juga dirancang rootless. Pengguna biasa bisa menjalankan container tanpa sudo, tanpa menjadi root. Ini adalah lompatan besar dalam hal keamanan, karena container yang berjalan dengan hak pengguna biasa tidak bisa membahayakan sistem host secara langsung.

Podman vs Docker: Apa Bedanya?

Aspek Docker Podman
DaemonPerlu dockerdTanpa daemon
RootlessTerbatasNative
ArsitekturClient-serverFork-exec
PodTidak nativeNative (Kubernetes-style)
systemd integrationManualGenerates unit files
Kompatibilitas CLIStandarMirip Docker
Image formatOCI + DockerOCI
LisensiApache 2.0 (engine)Apache 2.0
VendorDocker IncRed Hat

Banyak yang mengira Podman hanyalah "Docker tanpa daemon". Kenyataannya lebih dari itu. Berikut perbandingan keduanya:

| Aspek | Docker | Podman |

| Daemon | Perlu dockerd | Tanpa daemon |

| Rootless | Terbatas | Native |

| Arsitektur | Client-server | Fork-exec |

| Pod | Tidak native | Native (Kubernetes-style) |

| systemd integration | Manual | Generates unit files |

| Kompatibilitas CLI | Standar | Mirip Docker |

| Image format | OCI + Docker | OCI |

| Lisensi | Apache 2.0 (engine) | Apache 2.0 |

| Vendor | Docker Inc | Red Hat |

Perbedaan paling signifikan ada di arsitektur. Docker memakai model client-server: perintah docker yang kamu ketik dikirim ke daemon dockerd via REST API. Podman memakai model fork-exec: perintah podman langsung fork proses runtime untuk setiap container. Ini berarti Podman tidak punya single point of failure dan lebih transparan.

Untuk urusan pod, Podman unggul jauh. Pod di Podman memungkinkan beberapa container berbagi network namespace, IP, dan port — persis seperti pod di Kubernetes. Ini membuat transisi dari Podman ke Kubernetes sangat mulus.

Cara Install Podman

Podman tersedia di hampir semua distro Linux. Berikut cara install di beberapa distro populer.

Install di Debian/Ubuntu:

apt update

apt install podman -y

Install di Fedora:

dnf install podman -y

Install di Arch Linux:

pacman -S podman

Install di RHEL/CentOS:

dnf install podman -y

Setelah install, cek versi:

podman --version

Perintah Dasar Podman

Buat pengguna Docker, perintah Podman hampir identik. Ini beberapa perintah yang paling sering dipakai.

Menjalankan container:

podman run -d --name nginx-test -p 8080:80 nginx:alpine

Melihat daftar container:

podman ps

podman ps -a

Melihat daftar image:

podman images

Menarik image:

podman pull alpine:latest

Menghapus container:

podman rm -f nginx-test

Menghapus image:

podman rmi alpine:latest

Masuk ke container:

podman exec -it nginx-test sh

Melihat log:

podman logs -f nginx-test

Perintah-perintah di atas persis sama dengan Docker. Kalo kamu sudah terbiasa Docker, kamu tidak akan kesulitan pindah ke Podman. Bahkan, banyak script dan tutorial Docker yang langsung jalan tanpa perubahan.

Bekerja dengan Pod

Pod adalah fitur unggulan Podman. Satu pod berisi beberapa container yang berbagi jaringan dan storage. Ini contoh membuat pod dengan dua container:

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

podman run -d --pod my-pod --name web nginx:alpine

podman run -d --pod my-pod --name db postgres:16-alpine

Cek pod:

podman pod ps

Hentikan dan hapus pod:

podman pod stop my-pod

podman pod rm my-pod

Pod sangat berguna saat kamu ingin menjalankan aplikasi multi-container seperti web server + database + cache dalam satu unit logis. Ketika pod dihentikan, semua container di dalamnya ikut berhenti.

Podman dan systemd

Salah satu keunggulan Podman yang jarang dimiliki container engine lain adalah integrasi native dengan systemd. Kamu bisa generate unit file systemd dari container atau pod yang sedang berjalan:

podman generate systemd --new --name nginx-test

Perintah di atas menghasilkan unit file systemd yang siap dipakai. Simpan ke /etc/systemd/system/ lalu enable:

systemctl daemon-reload

systemctl enable --now container-nginx-test.service

Dengan cara ini, container kamu otomatis hidup saat boot dan dikelola layaknya service biasa. Sangat cocok untuk production server yang butuh reliability.

Rootless Container

Podman bisa berjalan sepenuhnya tanpa root. Pengguna biasa cukup melakukan setup awal:

podman unshare

podman system migrate

Setelah itu, pengguna bisa langsung menjalankan container:

podman run -d -p 8080:80 nginx:alpine

Container rootless ini berjalan dalam user namespace sendiri, jadi walaupun proses di dalam container terlihat root, sebenarnya ia berjalan dengan izin pengguna biasa di host. Ini membuat Podman jauh lebih aman daripada Docker yang default-nya berjalan sebagai root.

Port forwarding di rootless mode otomatis di-handle oleh podman. Jadi kamu tetap bisa expose port ke jaringan tanpa masalah.

Podman dan Docker Compose

Banyak pengguna Docker yang bergantung pada docker-compose. Kabar baiknya, Podman mendukung file compose lewat perintah podman-compose:

apt install podman-compose -y

podman-compose up -d

podman-compose ps

podman-compose down

Podman juga bisa dipasangkan dengan podman-compose atau docker-compose (via socket activation) untuk workload yang sudah memakai compose file. Ini memudahkan migrasi bertahap dari Docker.

Perintah Alias

Kalo kamu ingin pengalaman persis Docker, buat alias:

alias docker=podman

Tapi perlu diingat: walaupun CLI-nya mirip, Podman tidak selalu 100% kompatibel dengan Docker API. Untuk tool yang butuh Docker socket (seperti Portainer atau Jenkins plugin), kamu perlu socket activation:

systemctl --user enable --now podman.socket

Kemudian arahkan tool ke unix:///run/user/1000/podman/podman.sock.

Kapan Menggunakan Podman?

Podman cocok digunakan ketika:

  • Kamu ingin container tanpa daemon di background
  • Keamanan jadi prioritas (rootless)
  • Ingin transisi mulus ke Kubernetes
  • Menjalankan container di sistem dengan systemd
  • Ingin menghindari vendor lock-in
  • Sementara itu, Docker tetap pilihan baik kalo kamu butuh ekosistem tools yang paling matang, seperti Docker Desktop, Swarm, atau dukungan penuh Docker API.

    Podman di Production

    Podman sudah dipakai di production oleh banyak perusahaan besar, termasuk Red Hat OpenShift yang menggunakan CRI-O (runtime berbasis Podman) sebagai fondasinya. Kombinasi Podman + systemd + Quadlet memberikan cara deployment yang stabil dan mudah dikelola.

    Quadlet adalah fitur yang memungkinkan kamu mendefinisikan container dalam file unit systemd langsung:

    [Unit]

    Description=Nginx container

    [Container]

    Image=docker.io/library/nginx:alpine

    PublishPort=8080:80

    [Service]

    Restart=always

    [Install]

    WantedBy=default.target

    Simpan file di ~/.config/containers/systemd/nginx.container lalu jalankan:

    systemctl --user daemon-reload

    systemctl --user start nginx.service

    Container didefinisikan sebagai unit systemd, otomatis restart kalau crash, dan mulai saat login. Ini pattern yang sangat rapi untuk production.

    Troubleshooting Umum

    Kadang muncul masalah saat memakai Podman. Berikut solusi untuk beberapa masalah umum.

    Container tidak bisa akses internet:

    Periksa network mode:

    podman network ls

    podman run --network=host ...

    Permission denied saat rootless:

    Pastikan user namespace sudah di-setup:

    podman unshare

    podman system migrate

    Image pull lambat:

    Set mirror di /etc/containers/registries.conf:

    [registries.search]

    registries = ["docker.io", "quay.io"]

    DNS tidak resolve di container:

    Tambahkan dns ke perintah run:

    podman run --dns 8.8.8.8 ...

    FAQ

    Apakah Podman bisa menggantikan Docker sepenuhnya?

    Bisa untuk sebagian besar kasus. CLI-nya mirip, image OCI kompatibel, dan support compose via podman-compose. Kecuali kamu butuh fitur Docker spesifik seperti Docker Swarm atau Docker Desktop, Podman bisa jadi pengganti penuh.

    Apakah Podman aman dipakai tanpa root?

    Ya. Rootless adalah fitur utama Podman. Container berjalan dalam user namespace sehingga tidak bisa mengakses sistem host secara langsung. Ini justru lebih aman daripada Docker yang berjalan sebagai root.

    Apakah image Docker bisa dipakai di Podman?

    Bisa. Podman menggunakan format image OCI yang sama dengan Docker. Image dari Docker Hub bisa langsung di-pull dan dijalankan tanpa konversi.

    Bagaimana cara migrasi dari Docker ke Podman?

    Paling gampang: alias docker=podman lalu jalankan ulang workload. Untuk compose, pakai podman-compose up -d. Untuk integrasi systemd, generate unit file dengan podman generate systemd.

    Kesimpulan

    Podman bukan sekadar tiruan Docker. Ia adalah container engine modern dengan arsitektur yang lebih aman dan sederhana — daemonless, rootless, dan native pod support. Bagi kamu yang serius dengan containerization, Podman layak jadi pilihan utama. Mulai dari hal kecil: install Podman, jalankan container pertama, lalu eksplorasi fitur pod dan systemd-nya. Semakin cepat kamu pindah, semakin cepat kamu merasakan manfaatnya.

    Post a Comment
    Search
    Menu
    Theme
    Share
    Additional JS