Apakah Podman Lebih Baik dari Docker?


This work by Muhammad Raihan Widagdo is licensed under CC BY-SA 4.0

Photo by Tri Eptaroka Mardiana on Unsplash

Disclaimer: Artikel ini mungkin dapat mengandung opini dari penulis. Pembaca dihimbau untuk membentuk pandangan mereka sendiri berdasarkan informasi yang disajikan dan melakukan riset tambahan jika diperlukan.

Seperti yang kita tahu, konsep kontainerisasi adalah salah satu konsep yang mengubah lanskap pengembangan perangkat saat ini. Docker adalah salah satu yang memudahkan kita dalam membuat dan mengatur kontainer. Docker tidak sendirian dalam menawarkan solusi kontainerisasi, terdapat beberapa solusi lain seperti Podman, lxc, atau lxd. Podman sendiri secara garis besar memiliki konsep yang mirip dengan Docker, tentu saja terdapat perbedaan keduanya. Artikel ini akan berfokus komparasi Podman dan Docker.

Sekilas tentang Docker dan Podman

Docker adalah platform yang paling populer untuk membuat, mengelola, dan menjalankan container.
Docker memiliki arsitektur client-server yang terdiri dari Docker Engine (daemon), CLI (command-line interface), dan Docker Registry (tempat penyimpanan untuk image container). Docker sendiri menggunakan daemon untuk dapat bekerja. Artinya Docker membutuhkan suatu proses yang terus berjalan di host OS untuk dapat bekerja.

Podman adalah alat open-source untuk manajemen kontainer yang mirip dengan Docker yang dibuat oleh Red Hat. Podman sendiri memiliki desain yang berlawanan dengan Docker yaitu tidak membutuhkan daemon untuk dapat bekerja.

Command-line Interface

$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND         CREATED       STATUS             PORTS                   NAMES
c09419b0f1ad  localhost/url-shortener:latest  /home/app/main  4 months ago  Up 17 minutes ago  0.0.0.0:8080->8080/tcp  unruffled_chaplygin
89d3c597bddf  localhost/landing:latest        /home/app/main  4 months ago  Up 17 minutes ago  0.0.0.0:8081->8081/tcp  admiring_ganguly
$ podman image ls
REPOSITORY                TAG         IMAGE ID      CREATED       SIZE
localhost/landing         latest      1d53e909cd1f  4 months ago  301 MB
localhost/url-shortener   latest      f294c4c25402  4 months ago  883 MB
docker.io/library/golang  alpine3.18  f062eed153cb  4 months ago  231 MB
docker.io/library/alpine  latest      1dc785547989  4 months ago  8.02 MB

Docker dan Podman sendiri memiliki CLI yang sama. Siapa pun yang dapat pernah menggunakan Docker akan dapat menggunakan Podman. Bahkan, kita dapat menggunakan alias untuk Podman=Docker.

Arsitektur

Source: own work

Docker dan Podman sendiri memiliki kompabilitas dan bekerja satu sama lain dengan baik karena adanya spesifikasi OCI (Open Container Initiative). Docker menggunakan containerd sebagai “mesin”. Sedangkan Podman menggunakan libpod. Baik containerd dan libpod menggunakan runC. runC adalah sebuah runtime yang compliant dengan Open Container Initiative (OCI). runC berfungsi sebagai program tingkat rendah yang berinteraksi langsung dengan kernel Linux untuk mengelola pembuatan, eksekusi, dan penghancuran kontainer.

Daemon vs Daemonless?

Saya rasa pilihan terbaik dari dua pilihan ini adalah berdasarkan kebutuhan anda. Docker akan menjalankan daemon yang memudahkan anda untuk mengatur dan memulai kontainer secara otomatis ketika host baru saja dinyalakan. Di lain sisi, penggunaan daemon juga membuat penggunaan resource perangkat sedikit terbebani karena Docker harus menjalankan proses daemon dibanding daemonless. Di lihat dari aspek keamanan, banyak pendapat Docker memiliki attack surface yang lebih luas daripada Podman dikarenakan penggunaan daemon.

Container dalam Podman dapat berjalan dengan sangat ringan, terutama bila aplikasi menggunakan compiled programming language seperti Go atau Rust.
Setiap container yang berjalan dari Podman memiliki conmon untuk mengatur lifecycle dari sebuah container. 1924 merupakan RES (Resident Memory) yang artinya penggunaan memori aktual hanya sekitar 1.9 MiB.

GUI Feature

Baik Docker dan Podman memiliki aplikasi GUI yang memudahka pengguna yang sedikit “alergi” menggunakan CLI. Docker dengan Docker Desktop dan Podman dengan Podman Desktop. Untuk penggunaan komersial, Docker Desktop diharuskan melakukan subscription berbayar untuk perusahaan dengan lebih dari 250 karyawan atau pendapatan tahunan lebih dari 10 juta USD, sedangkan Podman Desktop sendiri memiliki lisensi open-source, yang artinya dapat digunakan secara bebas dan gratis.

Community Support?

Tidak dapat dipungkiri Docker adalah industry standard. Terdapat banyak sekali resource dan dukungan yang jauh lebih baik untuk Docker. Podman yang baru dirilis tahun 2019 tentu sangat tertinggal dengan Docker yang dirilis dari tahun 2013.


Kesimpulan

Dari beberapa informasi di atas, kita dapat memberikan kesimpulan bahwa Podman tidak lebih baik atau lebih buruk dari Docker. Walaupun begitu, Podman dengan beberapa konsep baru seperti daemonless, memberikan keunggulan tersendiri dibanding Docker. Adanya Podman memberikan pilihan platform alternatif untuk manajemen kontainer selain Docker.