Catatan seorang software developer yang nyemplung ke dunia Podman dan masih bertahan hidup


Saya sudah bertahun-tahun nulis kode, deploy aplikasi, dan begadang debug error di tengah malam. Docker? Sudah kayak sahabat lama. Tapi, ketika saya dengar soal Podman, saya penasaran: apa sih bedanya? Ternyata, Podman bukan cuma alternatif Docker—ini seperti sahabat lama yang datang dengan trik baru, seperti rootless containers dan bebas daemon.

Perjalanan saya dengan Podman penuh tawa, frustrasi, dan momen “kenapa container ini nggak jalan di Windows?” Berikut cerita saya, dengan gaya real talk ala developer, bukan manual kaku. Siap nyemplung?

Awal Mula: Kenalan Sama Podman

Bayangin Docker sebagai mobil dengan sopir yang selalu nyala (daemon). Nah, Podman itu kayak motor listrik—ringan, nggak ribet, dan nggak perlu hak akses root. Nama “Podman” (Pod Manager) sudah kasih clue: ini alat buat ngelola pod—grup container yang bekerja bareng, mirip konsep Kubernetes.

Pertama kali dengar Podman, saya pikir, “Apa iya perlu ganti dari Docker?” Setelah coba, jawabannya: iya, kalau kamu peduli keamanan dan fleksibilitas. Tapi, seperti semua hal di dunia dev, ada plot twist. Yuk, kita telusuri.

Mengapa Developer Harus Peduli?

Podman punya beberapa keunggulan yang bikin hati developer berdebar:

  • Tanpa Daemon: Nggak ada proses latar yang makan resource. Lebih aman, lebih hemat.
  • Rootless Containers: Bisa jalan tanpa hak root. Cocok buat dev yang paranoid soal keamanan (saya, misalnya).
  • Kompatibel dengan Docker CLI: Pakai docker run? Ganti ke podman run, dan voila—hampir sama.
  • OCI Image Support: Image Docker? Jalan di Podman. (Tapi, ya, kadang ada drama kecil.)

Real Talk: Jangan langsung lompat ke Podman karena FOMO. Kalau proyekmu udah nyaman sama Docker, tes dulu Podman di side project. Saya pernah buru-buru migrasi, dan… katakan saja, dokumentasi jadi penyelamat.

Apa yang Saya Lakukan:

  • Baca dokumentasi Podman (dan ngantuk di bagian networking).
  • Coba perintah sederhana di laptop: podman run alpine.
  • Tanya ke tim: “Kita butuh rootless buat apa?”
  • Tulis catatan di Notion biar nggak lupa.

Output: Pemahaman dasar soal Podman, dan keputusan apakah worth it buat proyek.


Langkah Pertama: Pasang Podman

Pasang Podman itu kayak install package biasa—kalau kamu di Linux. Kalau di Windows? Bersiaplah untuk petualangan.

Linux: Gampang Banget

Di Ubuntu, cukup buka terminal dan ketik:

sudo apt install podman

Dua menit, selesai. Podman siap, dan kamu bisa lanjut ngoding sambil dengerin playlist favorit.

Windows: Agak Drama

Di Windows, Podman butuh mesin virtual, jadi sedikit lebih ribet. Pilihannya:

  • Download installer dari Podman.io.
  • Kalau kamu kayak saya (suka efisiensi), pakai Scoop:
    scoop install podman
  • Inisiasi mesin virtual:
    podman machine init
    podman machine start
    Ini bikin WSL2 berbasis Fedora untuk container. Tapi, pastikan virtualization di BIOS nyala, atau kamu bakal stuck.

Pelajaran dari Kegagalan Saya:

  • Windows butuh podman machine start tiap reboot—jangan lupa!
  • Scoop kadang bikin PATH error. Cek dua kali.
  • Dokumentasikan langkah instalasi, karena “future you” pasti amnesia.
  • Jangan coba install tanpa cek CPU virtualization—saya pernah buang sejam sia-sia.

Alat yang Saya Pakai:

  • Linux: apt atau dnf
  • Windows: Scoop, WSL2
  • Terminal: Bash, selalu.

Output: Podman jalan, podman --version nggak error, dan kamu siap main container.


Main Bareng Container

Ini bagian seru: bikin container pertama. Podman bikin ini mirip Docker, tapi rasanya lebih… independen, karena nggak ada daemon yang ngawasin.

Container Pertama: Halo Dunia

Coba ini:

podman run -it --name my-container alpine

Ini kayak docker run, tapi tanpa daemon. Kamu masuk ke shell Alpine, dan rasanya kayak jadi hacker di film. Workflow saya:

  • Tarik image: podman pull alpine
  • Cek daftar image: podman images
  • Stop container: podman stop my-container
  • Hapus kalau perlu: podman rm my-container

Tips dari Lapangan:

  • Kasih nama container pake --name, atau Podman kasih nama acak yang bikin bingung.
  • Image Docker biasanya jalan, tapi cek format OCI-nya.
  • Rootless container kadang butuh tweak network (contoh: sysctl net.ipv4.ip_unprivileged_port_start=80).
  • Simpan perintah favorit di script Bash—saya punya file podman-shortcuts.sh.

Output: Container jalan, kamu paham dasar CLI, dan mungkin ketagihan.


Migrasi dari Docker: Gampang atau Mitos?

Podman bilang, “Saya kompatibel sama Docker CLI!” Benar, tapi ada bintang kecil (*). Script Docker kamu kebanyakan jalan, tapi jangan kaget kalau ada kejutan.

Apa yang Saya Coba

  • Tes perintah Docker: podman run, podman build, dll.
  • Install podman-docker biar perintah docker otomatis ke Podman.
  • Coba Docker Compose pake Podman Compose:
    podman-compose up
  • Catat apa yang gagal (dan percaya, pasti ada).

Drama Nyata:

  • Podman Compose nggak selalu mulus buat networking kompleks.
  • Beberapa image Docker butuh tweak biar jalan.
  • Rootless mode punya batasan, seperti port di bawah 1024.
  • Script Docker kamu mungkin perlu sedikit edit.

Checklist Migrasi:

  • Tes semua perintah Docker di Podman
  • Cek image compatibility
  • Catat tweak yang diperlukan
  • Backup Docker setup
  • Tes di dev environment dulu

Output: Script Docker yang diadaptasi, catatan migrasi, dan Podman Compose yang (harap-harap) jalan.


Ke Produksi: Antara Keren dan Chaos

Podman di laptop itu gampang. Di produksi? Bersiaplah buat debugging tengah malam dan doa.

Bikin Container Produksi

Contoh API sederhana pake Podman:

podman run -d -p 8080:8080 --name my-app my-image:latest

Ini jalanin container di port 8080, detached mode. Tapi, produksi nggak cuma run.

Apa yang Saya Lakukan:

  • Pakai Podman Compose buat multi-container.
  • Setup logging: podman logs my-app.
  • Monitor resource: podman system info.
  • Cek keamanan: podman info --debug | grep rootless.

Strategi Produksi:

  1. Shadow Mode: Jalanin Podman bareng Docker, cek hasilnya.
  2. Canary Release: 10% traffic ke Podman, lalu scale.
  3. Rollback Plan: Simpan Docker setup kalau Podman gagal.
  4. Monitor Ketat: Log error, latency, dan resource usage.

Kesalahan yang Saya Buat:

  • Lupa konfigurasi port di rootless mode—gagal akses.
  • Image nggak di-update, ketahuan ada vulnerability.
  • Nggak simpan logs—debugging jadi mimpi buruk.
  • Langsung ke produksi tanpa tes staging (jangan ditiru).

Output: Container di produksi, logging setup, dan rencana rollback.


Hidup Bareng Podman: Monitor dan Rawat

Container nggak cuma deploy lalu selesai. Mereka kayak tanaman: tanpa perhatian, layu.

Apa yang Saya Pantau

# Contoh monitoring sederhana
monitor_container() {
  podman ps --all  # Cek status
  podman logs my-app  # Cek error
  podman system info  # Cek resource
  podman image inspect my-image | grep vulnerabilities  # Cek keamanan
}

Tanda Masalah:

  • Container crash tanpa alasan (cek logs!).
  • CPU/memory melonjak.
  • Rootless error karena kernel setting.
  • Image lama punya celah keamanan.

Alat Monitoring:

  • Podman CLI: podman events untuk aktivitas
  • Prometheus + Grafana: Metrik sistem
  • Bash Script: Cek status tiap jam
  • Slack: Alert otomatis

Kapan Update:

  • Tiap bulan (image baru).
  • Kalau error rate naik.
  • Kalau bisnis butuh fitur baru.

Output: Dashboard monitoring, alert setup, dan catatan “lessons learned.”


Kesimpulan dari Petualangan Ini

Podman bukan sekadar “Docker tanpa daemon.” Ini alat yang bikin kamu mikir ulang soal containerization. Rootless dan kompatibilitas Docker CLI adalah bintangnya, tapi kamu harus siap buat debugging dan konfigurasi ekstra.

Pelajaran Penting:

  • Mulai kecil, jangan langsung ke produksi.
  • Dokumentasi adalah sahabatmu.
  • Log dan monitoring nggak opsional.
  • Rootless keren, tapi baca dulu limitasinya.

Stack Saya Sekarang:

  • Dev: Podman CLI, Bash, Vim
  • Deploy: Podman Compose, GitHub Actions
  • Monitoring: Prometheus, Grafana, custom Bash
  • Kolaborasi: Git, Slack, Notion

Podman itu kayak proyek coding baru: menantang, kadang bikin emosi, tapi pas berhasil, rasanya kayak sulap. Jadi, embrace the chaos, simpan logs, dan selalu punya backup plan.

P.S. Kalau container kamu jalan mulus pertama kali, cek ulang. Pasti ada bug di baliknya. 🚀