Docker atau Podman: selisih 10 ms bukan alasan untuk bermigrasi

|Penulis: Tim Redaksi QUASA|6 mnt baca| 1
Docker atau Podman: selisih 10 ms bukan alasan untuk bermigrasi

Selisih waktu mulai container saja tidak cukup untuk membenarkan migrasi dari Docker ke Podman. Dalam pengujian pada satu mesin, 20 pengulangan menjalankan image Alpine yang sudah tersedia menghasilkan rata-rata 352 ms untuk Docker dengan hak root dan 342 ms untuk Podman rootless: selisih 10 ms yang dinilai berada dalam variasi pengukuran. Angka itu membandingkan dua konfigurasi tertentu, bukan menetapkan engine yang selalu lebih cepat.

Podman layak dipertimbangkan bila layanan perlu dijalankan tanpa hak root dan dikelola melalui systemd. Docker tetap masuk akal bila proyek bergantung pada Compose serta alat yang mengharapkan socket Docker. Biaya migrasi ditentukan oleh kecocokan berkas, izin data, jaringan, dan cara layanan dijalankan sehari-hari.

Apa yang sebenarnya diukur oleh benchmark?

Pengujian waktu mulai tersebut memakai image yang telah diunduh, sehingga hasilnya tidak mencakup waktu menarik image dari registry. Docker dijalankan dengan hak root, sedangkan Podman dijalankan rootless; perbedaan mode hak akses dan jalur jaringan perlu diingat sebelum menganggap angka itu sebagai perbandingan murni antarmesin container. Beban kerja yang diukur juga singkat: menjalankan perintah pada image Alpine, bukan memulai aplikasi lengkap dengan database dan pemeriksaan kesehatan.

Pada mesin penguji yang sama, proses dockerd dan containerd memakai 144 MB memori saat tidak ada container berjalan, tepat setelah daemon dimulai ulang. Podman tidak memerlukan daemon pusat yang terus hidup, tetapi hal itu tidak berarti container aktifnya memakai memori nol: proses pemantau dan jaringan tetap membutuhkan sumber daya. Untuk server kecil, memori saat diam bisa menjadi pertimbangan; untuk layanan yang terus aktif, penggunaan memori seluruh proses lebih relevan daripada angka daemon saja.

Hasil jaringan dalam pengujian itu juga bergantung pada konfigurasi: Podman rootless memakai pasta, sementara Docker memakai jaringan bridge dengan hak root. Karena itu, angka lalu lintas dari satu host tidak dapat dipindahkan begitu saja ke server lain atau dipakai untuk menyimpulkan bahwa satu engine selalu unggul. Perbedaan arsitektur lebih mudah dipastikan daripada keunggulan kinerja umum dari satu rangkaian pengukuran.

Rootless dan daemonless: keuntungan dengan batas yang jelas

Dokumentasi Podman menjelaskan bahwa Podman bekerja tanpa daemon persisten, menyediakan perintah yang sebanding dengan CLI Docker, dan dapat dijalankan oleh pengguna biasa. Dalam mode rootless, Podman membuat user namespace berdasarkan pemetaan di /etc/subuid dan /etc/subgid. Container milik seorang pengguna tidak otomatis terlihat atau dapat dikelola oleh pengguna lain, termasuk saat Podman dijalankan sebagai root.

Pemisahan itu berguna pada host yang memberikan akun layanan tersendiri untuk aplikasi. Operator dapat mengelola container melalui akun tersebut tanpa menjadikan daemon pusat dengan hak root sebagai syarat operasi. Namun, izin berkas pada bind mount tetap harus sesuai dengan pemetaan pengguna; aplikasi yang menulis data ke volume dapat gagal meskipun image yang sama berjalan baik pada konfigurasi sebelumnya. Penyimpanan Podman rootless di NFS dan sejumlah sistem berkas terdistribusi juga tidak didukung untuk lokasi penyimpanan container; lokasi penyimpanan lokal perlu disiapkan bila direktori rumah berada di NFS.

Keamanan rootless bukan kemampuan eksklusif Podman. Panduan rootless Docker menerangkan bahwa daemon dan container Docker dapat berjalan sebagai pengguna non-root di dalam user namespace, dengan prasyarat pemetaan ID pengguna. Docker dalam mode ini tetap memiliki daemon, tetapi daemon tersebut tidak berjalan sebagai root. Jika alasan utama perubahan hanyalah mengurangi hak akses daemon, menguji mode rootless Docker lebih dahulu dapat menghemat pekerjaan memindahkan definisi layanan.

Compose menentukan besar kecilnya pekerjaan migrasi

Kesamaan perintah tidak menjamin kesamaan perilaku aplikasi. Menurut dokumentasi perintah Compose Podman, podman compose adalah pembungkus bagi penyedia eksternal seperti docker-compose atau podman-compose. Perintah tersebut meneruskan argumen kepada penyedia yang terpasang dan menyiapkan koneksi ke socket Podman. Pilihan penyedia dapat diatur, sehingga hasilnya bergantung pada penyedia Compose sekaligus perilaku engine di belakangnya.

Berkas Compose sederhana mungkin berjalan tanpa banyak perubahan, tetapi keberhasilan menjalankan perintah awal belum membuktikan seluruh alur kerja cocok. Periksa apakah layanan saling menemukan melalui jaringan, healthcheck memberi status yang diharapkan, volume tetap dapat ditulis, dan proses berhenti dengan benar. Fitur build, skrip pengembangan, serta alat CI yang berbicara langsung dengan Docker socket juga perlu dicoba pada konfigurasi sebenarnya. Jika alat tersebut memerlukan penyesuaian khusus, biaya pemeliharaannya menjadi bagian dari keputusan migrasi.

Quadlet memberi jalur langsung ke systemd

Untuk host Linux yang mengelola layanan lewat systemd, Podman menawarkan alasan migrasi yang lebih konkret. Panduan Quadlet menunjukkan bagaimana berkas deklaratif .container dan .volume diterjemahkan menjadi layanan systemd yang dapat dijalankan dengan systemctl. Berkas rootless ditempatkan pada direktori konfigurasi pengguna, sementara layanan dengan hak root memakai direktori sistem; status dan lognya kemudian mengikuti unit yang dihasilkan.

Integrasi ini memudahkan layanan container mengikuti pola operasi host untuk memulai, menghentikan, mengurutkan dependensi, dan membaca log. Ada pekerjaan konversi yang nyata: satu berkas Compose tidak otomatis berubah menjadi kumpulan unit Quadlet yang setara. Volume, port, akun layanan, dan urutan mulai harus diterjemahkan. Unit Quadlet dihasilkan oleh systemd, sehingga prosedur mengaktifkan layanan juga perlu mengikuti konfigurasi berkas Quadlet, bukan mengasumsikan semua langkah untuk unit buatan tangan berlaku sama.

Pilihan menurut lingkungan kerja

  • Pengembangan lokal: Docker cocok dipertahankan bila Compose, skrip, dan alat tim sudah konsisten. Podman menarik ketika pengembang membutuhkan pemisahan hak akses per pengguna; manfaat itu harus ditimbang terhadap penyesuaian skrip dan izin berkas proyek.
  • Self-hosting Linux: Podman memberi nilai jelas untuk layanan rootless yang ingin dikelola sebagai unit systemd. Untuk tumpukan Compose yang stabil, pindah engine hanya masuk akal bila perubahan tersebut menyelesaikan kebutuhan operasional yang nyata.
  • CI/CD: keputusan mengikuti kemampuan runner dan alat build. Cache, akses registry, volume sementara, serta proses yang membutuhkan Docker socket dapat lebih menentukan daripada waktu mulai satu container.
  • Layanan systemd: Quadlet sesuai bila systemd menjadi pusat pengelolaan host. Bandingkan manfaat pengelolaan itu dengan waktu untuk menulis unit baru dan menguji pemulihan layanan setelah boot atau kegagalan proses.

Daftar pemeriksaan sebelum memindahkan layanan

Mulailah dari layanan yang mewakili kebutuhan sebenarnya, terutama layanan yang memakai data persisten atau beberapa container sekaligus. Pemeriksaan berikut membantu membedakan kecocokan image dari kecocokan operasi:

  1. Catat versi engine, mode hak akses, penyedia Compose, dan alat yang mengakses socket. Jika tujuan utama adalah rootless, bandingkan konfigurasi rootless pada kedua engine.
  2. Jalankan definisi layanan yang ada. Periksa dependensi, healthcheck, nama jaringan, pemetaan port, dan cara layanan berhenti serta dimulai kembali.
  3. Uji volume dengan data percobaan. Pastikan proses dapat membaca dan menulis menggunakan pemilik berkas yang tepat, lalu coba pencadangan serta pemulihan data.
  4. Untuk Quadlet, periksa perilaku unit saat boot, mulai ulang, dan penghentian. Pada layanan rootless, pastikan pengelolaan sesi pengguna di host sesuai dengan kebutuhan layanan.
  5. Jika kinerja menjadi alasan perubahan, ukur aplikasi sendiri dengan konfigurasi jaringan dan penyimpanan yang akan dipakai. Pisahkan waktu mulai, memori saat diam, memori saat aktif, dan lalu lintas jaringan agar satu angka tidak mewakili seluruh beban kerja.

Bila pengujian kompatibilitas lolos, keuntungan rootless dan integrasi systemd dapat membenarkan perpindahan ke Podman. Bila penyesuaian Compose dan alat pendukung lebih besar daripada manfaat operasionalnya, mempertahankan Docker—termasuk memakai mode rootless bila sesuai—adalah pilihan yang wajar.

Baca juga:

Bagikan:

Berlangganan buletin kami

Dapatkan berita Web3, AI, dan kripto terbaru langsung di kotak masuk Anda.

0