PODMAN DOCKER-ALTERNATIVE CONTAINERIZATION DEVOPS LINUX SECURITY DEVELOPER-EXPERIENCE LOCAL-DEVELOPMENT BACKEND CLOUD-NATIVE RUNTIME

Podman: Alternatif Docker yang Ringan, Aman, dan Tanpa Daemon untuk Developer Web

⏱️ 6 menit baca
👨‍💻

Podman: Alternatif Docker yang Ringan, Aman, dan Tanpa Daemon untuk Developer Web

1. Pendahuluan

Sebagai developer web modern, kita sangat akrab dengan Docker. Alat ini telah merevolusi cara kita membangun, menguji, dan mendeploy aplikasi dengan menyediakan lingkungan yang konsisten dan terisolasi melalui kontainer. Namun, di balik kemudahan dan popularitasnya, Docker memiliki beberapa karakteristik yang terkadang menjadi perhatian, terutama terkait arsitektur daemon-nya dan kebutuhan akan hak akses root.

Pernahkah Anda merasa bahwa Docker desktop cukup berat? Atau khawatir dengan isu keamanan karena harus menjalankan daemon sebagai root? Nah, di sinilah Podman hadir sebagai alternatif yang menarik. Podman, singkatan dari Pod Manager, menawarkan pengalaman yang sangat mirip dengan Docker, tetapi dengan filosofi dan arsitektur yang berbeda secara fundamental.

Artikel ini akan membawa Anda menyelami Podman, memahami mengapa ia menjadi pilihan yang semakin populer, dan bagaimana Anda bisa mengintegrasikannya ke dalam workflow pengembangan Anda. Baik Anda seorang developer frontend yang ingin mencoba teknologi baru, backend engineer yang mencari runtime kontainer yang lebih aman, atau DevOps engineer yang mengelola infrastruktur, Podman layak Anda pertimbangkan.

2. Apa Itu Podman dan Kenapa Berbeda?

Pada intinya, Podman adalah runtime kontainer yang berfungsi sebagai pengganti langsung untuk Docker CLI. Anda bisa menggunakan sebagian besar perintah Docker yang sudah Anda kenal (pull, run, ps, build) dengan podman alih-alih docker. Ini berarti kurva pembelajarannya sangat rendah jika Anda sudah familiar dengan Docker.

🎯 Perbedaan Fundamental: Tanpa Daemon!

Perbedaan terbesar Podman dari Docker adalah arsitekturnya yang daemonless. Docker menggunakan arsitektur client-server, di mana docker CLI berkomunikasi dengan Docker Daemon (atau dockerd) yang berjalan di latar belakang. Daemon ini bertanggung jawab untuk semua operasi kontainer, dan seringkali membutuhkan hak akses root.

Sebaliknya, Podman beroperasi secara daemonless. Itu berarti tidak ada proses latar belakang yang terus-menerus berjalan untuk mengelola kontainer Anda. Setiap perintah podman yang Anda jalankan akan langsung berinteraksi dengan runC (runtime kontainer level rendah yang sama yang digunakan Docker) untuk membuat, menjalankan, dan mengelola kontainer.

Masalah dengan Daemon (Docker):

Keuntungan Tanpa Daemon (Podman):

3. Keunggulan Podman untuk Developer Web

Mari kita gali lebih dalam keuntungan praktis Podman:

3.1. Keamanan Lebih Baik dengan Rootless Containers

Ini adalah salah satu fitur paling menonjol dari Podman. Dengan Docker, daemon biasanya berjalan sebagai root, dan kontainer secara default juga berjalan sebagai root di dalam kontainer. Jika ada celah keamanan di kontainer atau Docker daemon itu sendiri, penyerang bisa mendapatkan hak akses root di host Anda.

Podman memungkinkan Anda menjalankan kontainer sebagai pengguna non-root di host Anda.

# Membuat kontainer rootless
podman run --rm -it alpine sh

Dalam mode rootless, kontainer berjalan di dalam user namespace yang terisolasi, yang memetakan user ID root di dalam kontainer ke user ID non-root di host. Ini secara drastis mengurangi attack surface dan membatasi kerusakan potensial jika kontainer disusupi.

📌 Tips Keamanan: Selalu usahakan untuk menjalankan kontainer sebagai non-root kapan pun memungkinkan, baik di Docker maupun Podman. Podman mempermudah hal ini secara default.

3.2. Ringan dan Hemat Sumber Daya

Tanpa daemon yang terus-menerus berjalan, Podman jauh lebih ringan dalam hal konsumsi sumber daya. Ini sangat terasa bagi developer yang bekerja di laptop dengan spesifikasi menengah, atau yang menjalankan banyak layanan di lingkungan pengembangan lokal mereka. Anda tidak perlu lagi khawatir tentang proses dockerd yang memakan CPU atau RAM secara tiba-tiba.

Ini juga berarti startup time yang lebih cepat untuk kontainer pertama Anda karena tidak perlu menunggu daemon untuk berinisialisasi.

3.3. Kompatibilitas Docker-CLI yang Tinggi

Podman didesain untuk menjadi drop-in replacement untuk Docker. Sebagian besar perintah yang Anda gunakan sehari-hari akan bekerja sama persis.

Perintah DockerPerintah PodmanFungsi
docker pull <image>podman pull <image>Mengunduh image kontainer
docker run <image>podman run <image>Menjalankan kontainer dari image
docker pspodman psMelihat kontainer yang sedang berjalan
docker stop <id>podman stop <id>Menghentikan kontainer
docker rm <id>podman rm <id>Menghapus kontainer
docker build -t <tag> .podman build -t <tag> .Membangun image dari Dockerfile
docker imagespodman imagesMelihat daftar image

Anda bahkan bisa membuat alias alias docker=podman di shell Anda untuk pengalaman yang benar-benar mulus!

3.4. Integrasi Mulus dengan Ekosistem Linux

Bagi pengguna Linux, Podman menawarkan integrasi yang lebih baik dengan alat-alat sistem operasi standar. Misalnya, Anda bisa dengan mudah mengelola kontainer Podman menggunakan systemd untuk menjalankan kontainer sebagai layanan sistem, memastikan kontainer otomatis restart saat boot atau jika crash.

# Contoh unit systemd untuk kontainer Nginx
# ~/.config/systemd/user/nginx-container.service
[Unit]
Description=Nginx container
After=network-online.target

[Service]
ExecStart=/usr/bin/podman run --name nginx-web -p 8080:80 -d nginx
ExecStop=/usr/bin/podman stop nginx-web
ExecReload=/usr/bin/podman restart nginx-web
Restart=on-failure
TimeoutStopSec=60

[Install]
WantedBy=default.target

Kemudian aktifkan:

systemctl --user enable nginx-container.service
systemctl --user start nginx-container.service

Ini memberikan fleksibilitas lebih bagi DevOps engineer untuk mengelola workload kont