Mengenal konsep pods ala Kubernetes di Podman: membuat pod dengan podman pod create, menempatkan container ke dalamnya dengan podman run --pod, memahami bagaimana container berbagi network namespace, serta cara menggeser mentalitas Docker menjadi mentalitas pod.

Di episode 5 kalian menjalankan container secara rootless dan daemonless. Sekarang saatnya membahas fitur yang paling membedakan Podman dari Docker: pods. Konsep ini datang dari Kubernetes, dan Podman mengadopsinya penuh — sebuah pod adalah sekelompok container yang berbagi network namespace, sehingga mereka bisa berkomunikasi lewat localhost seolah-olah satu mesin. Episode 6 ini mengajarkan cara membuat pod, menaruh container di dalamnya, dan mulai berpikir dalam mentalitas pod.
Selama lima episode sebelumnya kalian bekerja dengan satu container sebagai unit terpisah. Setiap podman run menciptakan container dengan network namespace miliknya sendiri, dan dua container harus dihubungkan lewat jaringan jika ingin saling bicara. Docker memperlakukan container sebagai unit dasar; Podman menambahkan lapisan di atasnya: pod.
Pod adalah unit penjadwalan terkecil ala Kubernetes. Satu pod berisi satu atau lebih container yang saling berbagi:
Karena berbagi network namespace, dua container dalam satu pod bisa saling memanggil lewat localhost. Inilah yang membuat pola sidecar — sebuah container pendamping yang melekat pada container utama — terasa natural di Podman.
Perbedaan cara berpikir ini lebih penting daripada perintahnya:
| Aspek | Docker | Pod (Podman/Kubernetes) |
|---|---|---|
| Unit dasar | Container | Pod berisi satu atau banyak container |
| Network namespace | Setiap container punya sendiri | Dibagi antar anggota pod |
| Komunikasi antar container | Lewat jaringan bridge | Lewat localhost di dalam pod |
| Sidecar pattern | Tidak ada padanan bawaan | Konsep inti |
| Transisi ke Kubernetes | Perlu repackaging | Struktur sudah menyerupai |
Di Docker, aplikasi web dan logshipper-nya adalah dua container terpisah yang berkomunikasi lewat jaringan. Di Podman, keduanya bisa menjadi satu pod yang berbicara lewat localhost — dan saat dipindahkan ke Kubernetes nanti, struktur pod-nya langsung dikenali.
Perintahnya sederhana:
podman pod create --name webpod
podman pod pspodman pod create --name webpod membuat pod kosong, dan podman pod ps menampilkan daftar pod beserta status dan jumlah containernya. Secara default pod baru berbagi network, IPC, dan UTS namespace — perilaku yang bisa diubah lewat opsi --share.
Pod yang sudah dibuat bisa diperiksa detailnya:
podman pod inspect webpodpodman pod inspect menampilkan konfigurasi lengkap pod, termasuk namespace apa saja yang dibagikan, network yang dipakai, dan status container di dalamnya. Output JSON ini berguna untuk debugging saat komunikasi antar container tidak berjalan seperti harapan.
Container ditempatkan ke dalam pod lewat opsi --pod pada podman run:
podman run -d --pod webpod --name nginx nginx:latest
podman run -d --pod webpod --name logger alpine sleep 3600
podman pod psKedua container masuk ke pod webpod. Container nginx dan logger kini berbagi network namespace — dari dalam container logger, nginx bisa diakses lewat localhost:80 tanpa perlu tahu IP. Karena berada di namespace yang sama, port yang di-publish di satu anggota pod akan diteruskan untuk seluruh pod, jadi pemetaan port cukup dilakukan sekali.
podman pod start, podman pod stop, dan podman pod kill bekerja untuk seluruh anggota.podman pod rm menghapus pod beserta container di dalamnya (dengan flag --force bila masih berjalan).Mengapa repot dengan pod? Jawabannya terletak pada arah industri. Kubernetes — yang menjadi standar orkestrasi — menempatkan pod sebagai unit terkecil. Aplikasi yang dibangun dengan struktur pod sejak awal bisa:
Kalian tidak perlu mengganti seluruh kebiasaan Docker sekaligus. Mulailah dari pola yang paling jelas untungnya: aplikasi yang terdiri atas beberapa proses yang harus saling bicara lewat localhost, misalnya aplikasi web dengan database proxy di sebelahnya.
Siklus hidup pod mengikuti pola yang sama dengan container:
| Perintah | Fungsi |
|---|---|
podman pod create | Membuat pod baru |
podman pod ps | Menampilkan daftar pod dan statusnya |
podman pod start | Menjalankan semua container dalam pod |
podman pod stop | Menghentikan semua container dalam pod |
podman pod inspect | Menampilkan detail konfigurasi pod |
podman pod rm | Menghapus pod beserta isinya |
podman pod stop webpod
podman pod rm webpodPerhatikan bahwa siklus hidup pod mengatur container-container di dalamnya sebagai satu kesatuan — inilah yang membuat pod cocok menjadi unit kerja di Kubernetes nanti.
Tip
Jika sebuah container sengaja dibuat agar tidak ikut berbagi network namespace pod, lewati flag --pod pada perintah podman run — container itu akan tetap berjalan normal dengan network namespace mandiri, terpisah dari pod.
Episode 6 memperkenalkan pods sebagai unit kerja baru di Podman: konsep sekelompok container yang berbagi network, IPC, dan UTS namespace; pembuatan pod dengan podman pod create; penempatan container dengan podman run --pod; pengelolaan lewat podman pod ps dan podman pod inspect; serta cara menggeser mentalitas Docker ke mentalitas pod ala Kubernetes.
Inti yang harus dibawa pulang:
podman pod create dan podman run --pod adalah dua perintah kunci untuk memulai.Di episode 7 berikutnya, kalian akan mempelajari cara data disimpan dan dibagikan antar container: volumes dan mounts — named volume, bind mount, tmpfs, sampai fitur podman volume rename yang hadir di Podman 6.1. Volume inilah yang menjembatani lifecycle container yang pendek dengan data yang harus bertahan.