Kursus
Container menjalankan aplikasi dan beban kerja data di seluruh dunia. Pertama kali dikonseptualisasikan pada tahun 1970-an, container menawarkan cara untuk mengemas segala sesuatu yang dibutuhkan untuk menjalankan suatu aplikasi atau beban kerja ke dalam satu objek. Container membantu menyelesaikan masalah “di mesin saya jalan” dengan menawarkan solusi terisolasi dan portabel untuk mengembangkan, menguji, dan mengirimkan kode. Alat seperti Kubernetes sangat bergantung pada container sebagai komponen inti arsitekturnya. Untuk saat ini, container tidak akan ke mana-mana.
Untuk menjalankan container-container ini, Anda memerlukan solusi manajemen container. Di sinilah Docker dan Podman berperan.
Docker dan Podman digunakan untuk membangun, mengelola, dan menerapkan container. Bersama-sama, kita akan membongkar persamaan dan perbedaan antara Docker dan Podman, beserta fungsionalitas unik masing-masing. Kita akan menelusuri hal-hal seperti arsitektur berbasis daemon dan tanpa daemon, manajemen multi-container, serta integrasi lintas platform. Pada akhirnya, Anda akan diperlengkapi dengan informasi yang Anda butuhkan untuk memilih solusi container yang tepat bagi kebutuhan Anda.
Jika Anda baru mengenal alat-alat ini, Anda juga dapat melihat kursus Introduction to Docker dan tutorial Introduction to Podman for Machine Learning kami.
Apa Itu Podman dan Docker?
Mari mulai dengan gambaran umum alat-alat ini untuk memulai perbandingan kita:
Gambaran Umum Docker
Docker adalah standar de facto untuk membangun, menjalankan, dan mengirimkan container. Container adalah objek yang menggabungkan dependensi tingkat OS dan semacam kode aplikasi untuk mengemas dan menjalankan hal-hal seperti aplikasi full-stack atau pipeline ETL di lingkungan mereka sendiri yang terisolasi. Container ibarat komputer kecil yang hanya memiliki hal-hal esensial untuk menjalankan suatu kode.
Docker tergolong muda dan pertama kali dirilis sebagai proyek open-source pada tahun 2013. Sejak itu, proyek ini berkembang pesat.
Saat menjalankan container di lingkungan perusahaan, hampir semua tim perangkat lunak dan data memilih Docker.
Pengembang dapat menjalankan Docker pada tiga sistem operasi utama, dan Docker terintegrasi dengan baik dengan hampir semua teknologi modern. Ini berarti seorang Data Engineer dapat menulis dan mengemas pipeline data menggunakan container Docker di Mac lokal mereka, lalu mengirimkan container tersebut untuk dijalankan di AWS ECS.
Alat seperti Docker CLI, Docker Desktop, dan Docker Hub memudahkan pengembang di semua tingkat keahlian untuk memulai.
Jika Anda mencari cara yang lebih praktis untuk belajar Docker, kami memiliki beberapa proyek Docker dan informasi tentang sertifikasi Docker yang dirancang untuk membantu meningkatkan keterampilan Docker Anda!
Gambaran Umum Podman
Seperti Docker, Podman adalah alat open-source untuk mengembangkan dan mengelola container. Podman awalnya dikembangkan oleh Red Hat sebagai alternatif Docker yang native Linux dan dirilis pada tahun 2019.
Yang paling menonjol, arsitektur dasar dari kedua runtime container ini berbeda; jika Docker memanfaatkan daemon, Podman berjalan tanpa daemon (lebih lanjut tentang ini nanti).
Tidak seperti Docker, Podman tidak memerlukan akses root ke mesin tempat pod yang dikelolanya berjalan; ini menjadikan Podman opsi yang lebih memperhatikan keamanan bagi tim yang menggunakan container untuk menjalankan aplikasi dan beban kerja mereka.
Pengguna Podman memperoleh pengalaman pengguna yang mirip dengan Docker; pengembang dapat memanfaatkan CLI atau GUI (Podman Desktop) untuk berinteraksi dengan Podman di lingkungan lokal mereka.
Pengguna Linux, Mac, dan Windows sama-sama dapat menggunakan Podman untuk membangun dan menguji container mereka secara lokal sebelum menerapkannya ke suatu lingkungan jarak jauh, seperti Kubernetes.
Perbedaan Utama Antara Podman dan Docker
Arsitektur daemon vs. tanpa daemon
Perbedaan terbesar antara Docker dan Podman adalah arsitektur dasar tempat keduanya dibangun. Docker sangat bergantung pada daemon, sedangkan Podman tanpa daemon.
Anda dapat menganggap daemon sebagai proses yang berjalan di latar belakang pada sistem operasi host. Dalam kasus Docker, daemonnya bertanggung jawab untuk mengelola objek Docker (image dan container) serta berkomunikasi dengan sistem lain. Untuk menjalankan daemonnya, Docker menggunakan paket bernama dockerd.
Mengapa ini penting? Pertama, daemon biasanya memerlukan akses tingkat root ke mesin tempat mereka berjalan. Hal ini rentan terhadap kerentanan keamanan—jika pelaku kejahatan bisa mendapatkan akses ke daemon, mereka kini memiliki akses ke seluruh mesin.
Arsitektur Podman yang tanpa daemon hadir dengan beberapa manfaat. Karena menjalankan daemon hampir selalu memerlukan hak istimewa root, arsitektur tanpa daemon dapat dianggap “tanpa root” (rootless). Ini berarti pengguna yang tidak memiliki akses tingkat sistem ke mesin tempat container mereka berjalan tetap dapat menggunakan Podman; ini tidak selalu berlaku pada Docker.
Alih-alih daemon, Podman menggunakan paket Linux yang dikenal sebagai systemd. Karena systemd adalah native pada sistem operasi Linux, Podman sering dianggap lebih “ringan” daripada Docker; pengguna Podman biasanya akan melihat waktu pemutaran container yang lebih cepat dibandingkan saat menggunakan Docker.
Membangun image dan container
Terlepas dari arsitektur mereka yang secara fundamental berbeda, baik Docker maupun Podman memiliki tujuan inti yang sama—menciptakan dan menjalankan image dan container. Namun, pendekatan mereka terhadap proses ini sedikit berbeda.
Dengan Docker, sebuah image dibangun dengan terlebih dahulu menambahkan perintah ke dalam sebuah Dockerfile. Lalu, dijalankan perintah seperti docker build. Ini menjalankan setiap pernyataan dalam Dockerfile, sehingga pada akhirnya membangun sebuah image. Kemudian image dapat “dijalankan” sebagai container. Seperti yang mungkin Anda duga, ini dilakukan menggunakan perintah docker run dengan menentukan ID atau tag image. Untuk membangun dan menjalankan beberapa container, kita akan menggunakan alat khusus yang disebut docker-compose, yang akan kita bahas sedikit nanti.
Proses membangun image dan menjalankannya sebagai container hampir identik di Podman. Alih-alih sebuah Dockerfile (meskipun nama file ini tetap berfungsi), pengguna Podman akan membuat sebuah Containerfile. Sintaks untuk menyusun image adalah sama. Setelah perintah yang sesuai ditambahkan ke Containerfile, image dapat dibangun dan dijalankan menggunakan Podman CLI.
Sebagian besar, Podman kompatibel dengan sebagian besar hal di Docker. Anda akan menemukan beberapa perbedaan di sana-sini, tetapi pada umumnya, Docker CLI dapat ditukar dengan Podman CLI tanpa hambatan.

Podman vs Docker Desktop
Docker Desktop untuk akses multi-platform yang disederhanakan
Ada beberapa cara untuk bekerja dengan Docker. Praktisi perangkat lunak dan data berpengalaman biasanya mengandalkan Docker CLI (alias Docker client) untuk berinteraksi dengan image dan container Docker mereka.
Namun, ada cara yang bahkan lebih mudah untuk memulai, yaitu dengan Docker Desktop.
Docker Desktop adalah alat berbasis GUI gratis yang menyediakan antarmuka bagi pengguna untuk membangun dan mengelola image dan container yang menjalankan aplikasi atau beban kerja mereka. Seorang data engineer dapat menggunakan Docker Desktop untuk melihat image yang tersedia di mesinnya dan memutar image tersebut menjadi container. Demikian pula, seorang Software Developer dapat menarik image dari Docker Hub untuk digunakan saat memulai proyek berikutnya.
UI-nya sederhana dan intuitif digunakan sekaligus mempertahankan visibilitas dan kontrol penuh terhadap lingkungan Docker Anda.
Namun, Docker Desktop menawarkan lebih dari sekadar melihat dan mengelola objek Docker.
Pengguna dapat melakukan hal-hal seperti mengelola (hingga ke level byte) sumber daya yang tersedia untuk objek Docker mereka, menempel ke container yang sedang berjalan, atau meluncurkan klaster Kubernetes di mesin lokal mereka. Pengguna Docker Desktop dapat memilih dari ratusan ekstensi, atau memulai perjalanan Docker mereka dengan tutorial dan lingkungan contoh yang membantu. Untungnya, Docker Desktop sangat mudah diakses dan berjalan di Mac, Windows, atau Linux.
Fitur dan keterbatasan Podman Desktop
Podman Desktop tampak dan terasa sangat mirip dengan padanannya di Docker. Dari UI Podman Desktop, pengguna dapat melihat dan mengelola container, image, pod, dan volume. Seperti Docker, Podman mendukung plugin dan integrasi untuk melakukan hal-hal seperti menjalankan klaster Red Hat OpenShift secara lokal atau bekerja dengan LLM menggunakan Podman AI Lab.
Jika Anda memiliki plugin kustom yang ingin Anda gunakan, bagus—Anda dapat menginstalnya dari Podman Desktop.
Jika Anda adalah pengguna Docker sekaligus Podman, Anda mungkin terkejut melihat objek Docker dan Podman dari UI Podman Desktop. Ini bukan kebetulan! Kita akan melihat lebih dekat implikasinya sebentar lagi. Sementara itu, ini berarti pengguna dapat berinteraksi dengan objek Podman DAN Docker mereka, semuanya melalui satu panel.
Kasus penggunaan paling umum untuk container adalah menjalankannya melalui Kubernetes. Meskipun Docker bergelar standar industri untuk kontainerisasi, Podman menyediakan pengalaman Kubernetes yang lebih tangguh di Podman Desktop.
Kemampuan untuk melihat dan mengelola sumber daya Kubernetes seperti node, pod, deployment (dan banyak lagi) menjadikan administrasi dan pengembangan Kubernetes sebagai warga kelas satu di Podman Desktop. Alat-alat ini, ditambah plugin seperti integrasi Red Hat OpenShift yang disebutkan sebelumnya, membedakan Podman sebagai alat yang ditujukan untuk lingkungan yang berfokus pada Kubernetes.
Podman Compose vs Docker Compose
Mendefinisikan dan mengelola aplikasi multi-container dengan Docker
Sebagian aplikasi dan beban kerja dapat dikemas dalam satu container. Sebagiannya tidak. Untuk memudahkan manajemen multi-container, Docker menawarkan alat bernama Docker Compose. Docker Compose menggunakan satu berkas YAML untuk mendefinisikan komponen aplikasi Anda.
Kemudian, menggunakan docker-compose CLI, container dan layanan ini dapat dijalankan, dihentikan, atau dibangun ulang. Berkas YAML Docker Compose mungkin terlihat seperti ini:
yaml
version: '3'
services:
app:
image: python:3.10
container_name: app
command: run app --host=0.0.0.0
database:
image: postgres:13
container_name: database
ports: 5432
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data
Ada banyak hal yang terjadi, tetapi yang Docker Compose memungkinkan kita lakukan adalah mendefinisikan berkas YAML dengan dua layanan dan satu volume. Lalu, perintah docker-compose up akan memutar container-container ini, dan kita akan memiliki aplikasi yang berjalan.
Bagi tim perangkat lunak dan data yang menjalankan aplikasi dan beban kerja besar, Docker Compose memudahkan pengembangan lokal sekaligus pengiriman dan menjalankan kode di lingkungan produksi.
Pendekatan Podman untuk aplikasi multi-container
Menjalankan aplikasi multi-container dengan Podman terlihat dan terasa persis seperti bekerja dengan Docker. Podman melakukan ini menggunakan Podman Compose. Seperti Docker Compose, Podman Compose menggunakan berkas YAML untuk mendefinisikan komponen aplikasi secara deklaratif.
Kemudian podman-compose CLI dapat digunakan untuk menyalakan, mematikan, atau me-restart layanan yang didefinisikan dalam berkas YAML.
Sebagian besar, podman-compose dapat digunakan sebagai pengganti docker-compose (ada beberapa ketidakcocokan di sana-sini). Seperti pada Docker, menggunakan Podman Compose memungkinkan aplikasi multi-container dikelola secara mandiri dan fleksibel.
Di bawah ini, Anda akan melihat tabel yang membandingkan Docker vs Podman.
|
Fitur/Aspek |
Docker |
Podman |
|
Arsitektur |
Docker memanfaatkan daemon sebagai komponen arsitektural inti. |
Arsitektur tanpa daemon. |
|
Keamanan |
Memerlukan hak istimewa root untuk membangun, menjalankan, dan mengelola container. |
Sifat arsitektur Podman yang tanpa daemon menjadikannya alat manajemen container yang lebih memperhatikan keamanan. |
|
Perkakas Pengguna |
Docker Desktop, docker CLI |
Podman Desktop, podman CLI |
|
Kompatibilitas |
Windows, Mac, Linux |
Native untuk Linux, tersedia untuk Windows dan Mac. |
|
Adopsi |
Standar industri untuk orkestrasi container dengan komunitas yang masif dan hampir universal kompatibel. |
Alternatif untuk Docker dengan komunitas yang lebih kecil namun terus berkembang. |
Kasus Penggunaan dan Skenario Terbaik untuk Podman vs Docker
Sekarang mari kita jelajahi pertanyaan kunci yang mungkin Anda ajukan—kapan sebaiknya menggunakan Docker, dan kapan sebaiknya menggunakan Podman? Mari kita lihat lebih dekat.
Kapan menggunakan Docker
Docker adalah standar de facto untuk membangun, menjalankan, dan mengirimkan container. Jika Anda baru memulai dengan kontainerisasi (terutama di mesin pribadi Anda), cobalah menggunakan Docker.
Sangat mudah untuk menyalakan container pertama (atau ke-50) Anda menggunakan alat seperti Docker Desktop atau Docker CLI. Docker memiliki komunitas yang masif, dan kemungkinan besar, apa yang Anda coba lakukan sudah pernah dilakukan. Ini membantu memudahkan hal-hal seperti pemecahan masalah.
Docker menawarkan konsistensi lintas platform yang lebih baik daripada Podman. Yang paling penting, Docker terintegrasi dengan hampir setiap layanan berbasis container, termasuk AWS ECS, Azure AKS, dan Google Cloud Run.
Ini berarti ketika tiba saatnya menjalankan container Anda di produksi, Anda dapat dengan mudah berintegrasi dengan layanan pilihan Anda. Kemampuan untuk berpindah dari pengembangan lokal ke produksi adalah salah satu bagian paling kuat dari mengontainerkan kode Anda dengan Docker.
Bukan hanya tim Software dan Data Engineering yang menggunakan Docker. Insinyur AI dan ML, Data Scientist, dan bahkan Analis Data menggunakan Docker untuk mendukung pekerjaan mereka!
Kapan menggunakan Podman
Bagi pengembang yang bekerja di lingkungan yang sensitif terhadap keamanan atau sangat teregulasi, Podman mungkin menjadi manajer container pilihan Anda. Ingat, Podman bersifat rootless, artinya pengguna yang menjalankan Podman secara lokal tidak memerlukan akses root ke mesinnya untuk membangun dan mengelola container secara lokal. Di bawah ini beberapa alasan lagi mengapa masuk akal untuk cenderung memilih Podman dibandingkan Docker.
- Anda mengembangkan secara lokal di mesin Linux.
- Penggunaan sumber daya dasar dan waktu pemutaran container penting bagi Anda.
- Anda berencana mengirim container ke klaster Kubernetes atau ingin meniru lingkungan Kubernetes di mesin lokal Anda.
Berikut hal lain yang perlu diingat: pada umumnya, Podman dan Docker dapat dipertukarkan. Artinya jika Anda mulai menggunakan Docker dan menyadari bahwa Podman adalah alat yang tepat untuk Anda, mudah untuk beralih di antara kedua penawaran ini.
Kesimpulan
Menjalankan container memerlukan alat untuk mengelola objek-objek ini. Bersama-sama, kita telah menelusuri dua alat kontainerisasi paling populer: Docker dan Podman.
Sebagai standar industri untuk kontainerisasi, Docker digunakan oleh jutaan orang untuk menjalankan aplikasi dan beban kerja data di seluruh dunia. Arsitektur Docker dibangun di atas Docker daemon, yang memerlukan akses root ke sistem tempat container berjalan.
Untuk berinteraksi dengan Docker, pengembang dapat memanfaatkan Docker CLI atau Docker Desktop, keduanya menawarkan kemampuan untuk mengelola hal-hal seperti image, container, dan volume. Adopsi Docker yang luas berarti komunitas yang besar dan dinamis, serta dukungan di ketiga sistem operasi utama dan hampir setiap layanan berbasis container.
Podman menawarkan solusi manajemen container alternatif. Podman tanpa daemon dan tanpa root (rootless), artinya pengguna tidak perlu akses root ke mesin yang mereka gunakan untuk menjalankan Podman. Ini menarik bagi tim yang menuntut alat manajemen container yang lebih memperhatikan keamanan. Seperti Docker, Podman menawarkan CLI dan UI untuk membangun dan mengelola container. Meskipun native untuk Linux, Podman dapat dijalankan di Windows dan Mac dan terintegrasi cukup baik dengan alat seperti AWS ECS dan Azure AKS.
Terlepas dari alat yang Anda pilih, mempelajari cara “mengontainerkan” kode yang Anda tulis adalah salah satu cara tercepat untuk meningkatkan keterampilan pengembangan Anda. Jika Anda ingin mempelajari lebih lanjut tentang Docker dan Podman, jangan ragu untuk langsung praktik dengan kursus seperti Introduction to Docker atau Containerization and Virtualization Concepts. Semoga sukses, dan selamat ngoding!
FAQ Podman vs Docker
Apa itu container?
Container adalah objek yang memuat segala sesuatu yang dibutuhkan untuk menjalankan suatu aplikasi atau beban kerja data. Anda dapat menganggap container seperti komputer kecil yang hanya memiliki hal-hal esensial untuk menjalankan suatu kode. Untungnya, kita dapat menjalankan container ini di mesin lokal kita maupun di server yang membuat solusi dapat diakses oleh dunia.
Mengapa saya akan menggunakan container dalam proyek saya?
Menggunakan container dalam proyek Anda memungkinkan Anda mengemas kode dalam satu objek. Mengapa ini penting? Artinya Anda dapat dengan mudah membagikan kode kepada pengembang lain atau bahkan mengirimkan kode ke produksi tanpa harus membuat ulang seluruh lingkungan lokal Anda.
Mengapa saya perlu menggunakan manajer container seperti Docker atau Podman?
Untuk membangun, menjalankan, dan mengelola container Anda perlu menggunakan manajer container. Docker dan Podman menyediakan alat untuk membuat dan menguji container Anda sebelum menerapkan solusi Anda ke dunia. Tanpa alat seperti Docker atau Podman, tugas-tugas ini akan cukup rumit.
Apa arti tanpa daemon (daemonless)?
Daemon adalah proses yang selalu berjalan di latar belakang. Tanpa daemon berarti alat tersebut ada tanpa selalu memiliki proses yang berjalan di latar belakang.
Apakah ada manajer container lain selain Docker atau Podman?
Containerd dan LXC adalah sistem manajemen container populer untuk membantu membangun, menjalankan, dan mengelola container dalam skala besar.
Jake adalah seorang data engineer yang mengkhususkan diri dalam membangun infrastruktur data yang tangguh dan dapat diskalakan menggunakan Airflow, Databricks, dan AWS. Jake juga merupakan instruktur untuk kursus DataCamp Introduction to Data Pipelines dan Introduction to NoSQL.

