EP36: Docker vs Virtual Machine: Apa Perbezaannya?
Belajar bagaimana Docker dan Virtual Machine berbeza
Sebelum wujudnya teknologi container seperti Docker, kebiasaannya sesuatu aplikasi akan dijalankan terus atas sistem pengoperasian, sama ada secara bare metal ataupun dalam virtual machine. Akan tetapi masalah mula timbul bila aplikasi yang dibangunkan dalam satu persekitaran tidak dapat berjalan dengan lancar dalam persekitaran lain.
Sebagai contoh, aplikasi yang dibangunkan oleh developer dalam laptop berfungsi dengan baik. Namun apabila kod aplikasi yang sama di jalankan dalam server, ia tidak berfungsi seperti yang sepatutnya.
Ini disebabkan oleh beberapa faktor seperti sistem pengoperasian yang berbeza, versi perisian yang digunakan berbeza, konfigurasi yang berlainan, ataupun method deployment yang berbeza.
Selain itu, masalah “dependency version conflict” kerap berlaku di mana dua aplikasi yang dijalankan dalam sistem yang sama menghadapi masalah kerana kedua-duanya memerlukan library yang sama tapi versi yang berbeza.
Masalah “dependency version conflict” ini boleh diselesaikan dengan menggunakan virtual machine yang berbeza, namun begitu seperti yang diketahui, virtual machine bukanlah sesuatu teknologi yang ringan. Setiap VM memerlukan sistem pengoperasian tersendiri, saiznya yang besar, memerlukan masa untuk boot, dan memakan banyak sumber sistem.
Semua masalah ini membawa kepada keperluan untuk penyelesaian yang lebih ringan, pantas, dan konsisten. Sebab itu Docker mula diperkenalkan.
Apa itu Docker?
Docker adalah platform open-source yang membolehkan developer mempakejkan aplikasi mereka bersama dengan semua keperluan aplikasi tersebut seperti perisian, libraries, runtime dan konfigurasi ke dalam satu imej yang dipanggil container. Container ni boleh dijalankan di mana-mana sahaja akan tetapi ia memerlukan Docker Engine.
Apa yang menarik, container Docker berkongsi kernel dengan sistem pengoperasian host. Ini bermaksud ia tidak perlu bawa sistem pengoperasian penuh seperti virtual machine, jadi saiznya jauh lebih kecil. Proses untuk "start" container juga sangat pantas, dalam beberapa saat sahaja, aplikasi sudah boleh berjalan.
Cuma satu perkara perlu diambil perhatian adalah container Linux hanya boleh dijalankan atas host Linux. Untuk pengguna Windows, Docker sebenarnya menggunakan lapisan virtual seperti WSL2 (Windows Subsystem for Linux) di belakang tabir.
Apa pula Virtual Machine?
Virtual Machine pula adalah teknologi lama tapi masih relevan. Setiap VM mempunyai sistem pengoperasiannya yang sendiri, kernel sendiri, dan dijalankan menggunakan perisian hypervisor seperti VMware, VirtualBox, atau Hyper-V.
Dengan menggunakan VM, anda boleh jalankan apa saja sistem pengoperasian sebagai guest OS seperti Windows, Linux, atau macOS. Selain itu, konsep pengasingan antara VM menjadi lebih ketara kerana ia tidak berkongsi kernel dengan hos.
Namun, semua itu datang dengan kosnya iaitu saiz imej, masa untuk boot, dan penggunaan sumber sistem yang banyak. VM biasanya bersaiz GB dan mengambil masa untuk boot up, terutama jika terdapat banyak service untuk dijalankan serentak.
Jadi, Apa Beza Antara Docker dan Virtual Machine?
Secara ringkasnya, Docker lebih ringan, lebih pantas dan sangat sesuai untuk aplikasi moden yang bersifat microservices atau yang perlu kerap deploy. Ia membolehkan kita jalankan banyak container dalam satu sistem tanpa membebankan sumber pengkomputeran.
Virtual Machine pula lebih berat tapi sesuai bila anda perlukan sistem pengoperasian penuh, atau bila anda perlu uji sesuatu yang memerlukan konfigurasi sistem sendiri. Dalam sesetengah kes, VM digunakan untuk host Docker juga — contohnya dalam Windows, Docker sebenarnya berjalan dalam VM Linux melalui WSL2.
Bila perlu guna Docker? Bila perlu guna VM?
Jika anda sedang bangunkan aplikasi moden, perlu CI/CD pipeline yang pantas, atau perlu jimatkan sumber pengkomputeran, Docker adalah pilihan yang baik. Ia sudah mula digunakan secara meluas dalam persekitaran production, homelab, aplikasi cloud-native, atau apa-apa sistem yang perlukan kepantasan untuk deployment.
Namun, jika anda perlu jalankan aplikasi yang lama, atau sistem legasi, atau perlu jalankan simulasi sesuatu sistem pengoperasian, VM adalah pilihan yang sesuai kerana ia memberi kawalan penuh ke atas sistem pengoperasian.
🚀 DEPLOY APLIKASI WEB DENGAN MUDAH MENGGUNAKAN DOCKER!
Masa mula-mula belajar Docker, saya sendiri struggle. Tak faham apa benda Docker ni dan macam mana Docker ni berfungsi. Makan masa jugak nak faham, sebab tak ada orang nak bagi tunjuk ajar.
BELAJAR MENGENAI INFRASTRUKTUR IT SECARA ONLINE
Jom belajar mengenai Infrastruktur IT secara online dan fleksible mengikut masa anda! Dapatkan rakaman kursus-kursus dan ‘upgrade’ kemahiran anda sekarang di : https://upskill.inframesia.com
SERTAI KOMUNITI INFRAMESIA
Sertai Komuniti Infrastruktur It Malaysia untuk berbincang, bertanyakan soalan, berkongsi ilmu, pandangan dan mendapatkan bantuan berkenaan IT daripada penggiat IT Malaysia.
Telegram : https://t.me/inframesia
Facebook : https://www.facebook.com/groups/komunitiinfrastrukturit
Discord : https://discord.gg/7A2ktCEm
DAPATKAN SERVIS BERKAITAN INFRASTRUKTUR IT
Kami menawarkan servis profesional merangkumi server, network, cloud, backup & monitoring dan banyak lagi.
Sama ada anda syarikat kecil atau besar, kami sedia bantu anda untuk menyelesaikan masalah berkaitan infrastruktur IT. Ada fokus pada pengurusan organisasi dan perniagaan, kami bantu uruskan infrastruktur IT anda.
SUBSCRIBE NEWSLETTER INFRAMESIA
Belajar infrastruktur IT dengan penerangan dan infografik yang mudah difahami. Subscribe blog ini untuk membolehkan anda menerima artikel-artikel terkini terus ke email anda dan upgrade untuk dapatkan akses kepada artikel premium.