Memahami mode rootless Podman: user namespace remapping yang menjalankan container tanpa sudo, pembatasan resource lewat cgroups, networking user-space dengan slirp4netns dan pasta, serta podman machine sebagai VM ringan untuk macOS dan Windows.

Episode 4 membahas image dan registry. Episode 5 ini kembali ke fondasi keamanan yang dijanjikan sejak episode 1: mode rootless dan daemonless yang menjadi pembeda utama Podman. Kalian akan mempelajari bagaimana Podman berjalan sebagai pengguna biasa, bagaimana resource dibatasi, bagaimana networking bekerja tanpa root, dan bagaimana podman machine menjalankan semua itu di macOS dan Windows.
Mode rootless berarti seluruh operasi container berjalan sebagai pengguna biasa — tanpa sudo dan tanpa daemon root. Inilah yang membuat Podman lebih aman: tidak ada proses container yang memiliki hak akses penuh atas host.
Kunci teknisnya adalah user namespace. Podman memetakan identitas user di dalam container ke sebuah rentang UID khusus di host. Proses di dalam container mengira ia berjalan sebagai root (UID 0), tetapi di host UID itu dipetakan ke user biasa dengan nomor yang digeser — misalnya UID 100000. Jika container berhasil kabur dari isolasinya, hak yang didapat tetap hak user biasa, bukan root.
Mekanisme ini diatur lewat konfigurasi containers.conf:
[containers]
userns = "auto"userns = "auto" membuat Podman mengalokasikan rentang UID secara otomatis untuk setiap container. Nilai ini sudah menjadi default dan merupakan alasan utama kenapa podman run tidak pernah butuh sudo.
Tanpa sudo, batasan resource tetap bisa diberlakukan lewat cgroups v2, dan Podman menyediakan flag langsung untuk itu:
podman run -d --name api --memory 512m --cpus 0.5 nginx:latest
podman stats api--memory 512m membatasi memori container, --cpus 0.5 membatasi pemakaian CPU, dan podman stats memantau hasilnya. Batasan ini bekerja di dalam cgroup milik user — sehingga tidak membutuhkan hak root.
Mode rootless mengubah beberapa asumsi dibanding mode root:
Bukan berarti rootless tidak bisa dipakai produksi — banyak deployment memakai rootless dengan sengaja. Tetapi memahami batasan ini menghindarkan kalian dari kebingungan saat sebuah container berperilaku berbeda antara host root dan rootless.
Container rootless tidak bisa membuat bridge jaringan seperti container root. Sebagai gantinya, Podman memakai penerjemahan jaringan user-space:
| Aspek | slirp4netns | pasta |
|---|---|---|
| Model | NAT user-space klasik | Penerusan port langsung |
| Kekuatan | Kompatibilitas luas | Kinerja port forwarding |
| Status | Didukung luas | Pilihan modern |
Untuk melihat network backend mana yang aktif, jalankan podman info — bagian host dari outputnya menampilkan backend tersebut.
Important
Dalam mode rootless, port tidak dibuka langsung di host melainkan diteruskan oleh proses user-space. Konfigurasi port mapping di CLI tetap sama, tetapi jalur datanya melewati slirp4netns atau pasta — bukan kernel networking host.
Di macOS dan Windows, Podman tidak bisa memakai kernel Linux secara langsung. Solusinya adalah podman machine: sebuah mesin virtual ringan yang dijalankan dan dikelola Podman sendiri.
Alur dasarnya dua langkah:
podman machine init
podman machine startpodman machine init membuat VM baru di latar belakang; podman machine start menyalakan dan mengonfigurasi koneksinya. Setelah VM berjalan, semua perintah podman diteruskan secara otomatis ke VM — kalian tidak perlu memikirkan detailnya.
VM yang dibuat podman machine init memakai resource dengan nilai bawaan. Jika butuh VM yang lebih besar, tentukan saat inisialisasi:
podman machine init --cpus 2 --memory 2048 --disk-size 40
podman machine start--cpus 2 memberi dua core, --memory 2048 memberi 2 GB RAM, dan --disk-size 40 memberi ruang disk 40 GB. Atur sesuai kebutuhan aplikasi yang akan dijalankan di dalam VM.
Beberapa perintah pengelolaan yang sering dipakai:
| Perintah | Fungsi |
|---|---|
podman machine list | Menampilkan daftar machine dan statusnya |
podman machine ssh | Masuk ke shell VM |
podman machine stop | Menghentikan VM |
podman machine inspect | Menampilkan detail konfigurasi VM |
podman machine list
podman machine sshBaris podman machine ssh membuka shell di dalam VM — berguna untuk memeriksa hal-hal yang berjalan di sisi VM. Port yang di-publish oleh container di VM otomatis diteruskan ke host, sehingga kalian tetap bisa mengakses aplikasi dari browser di macOS atau Windows. Meski untuk penggunaan berat VM menambah sedikit overhead, bagi pengembangan harian podman machine terasa hampir identik dengan Podman native di Linux.
Tip
Jika port tidak bisa diakses dari browser meski container sudah berjalan, cek dulu podman machine list — VM harus dalam status running. Masalah port forwarding pada podman machine sering berakar pada VM yang berhenti, bukan pada konfigurasi container.
Episode 5 menutup lapisan keamanan Podman: user namespace remapping yang membuat container berjalan sebagai user biasa, batasan resource lewat cgroups tanpa sudo, networking rootless lewat slirp4netns dan pasta, serta podman machine yang membawa Podman ke macOS dan Windows lewat VM ringan.
Inti yang harus dibawa pulang:
--memory dan --cpus bekerja lewat cgroups v2.pasta dan slirp4netns menggantikan bridge kernel.podman machine init dan podman machine start adalah gerbang Podman di macOS dan Windows.Episode 6 berikutnya memperkenalkan konsep yang paling khas dari Podman: pods — sekelompok container yang berbagi network namespace ala Kubernetes. Kalian akan membuat pod, menaruh container di dalamnya, dan mulai berpikir dalam mentalitas Kubernetes.