Apa bedanya VM (Virtual Machine) dengan Docker (container)? Docker adalah alat bantu untuk membungkus, mengirimkan dan manjalankan aplikasi dalam suatu container. VM dan Kontainer mempunyai tujuan yang mirip, mengisolasi aplikasi dan dependensinya ke dalam suatu unit yang mandiri dan dapat dijalankan di mana saja. Di samping, container dan VM menghilangkan ketergantungan pada perangkat keras, membuat penggunaan computing resources yang lebih efisien, baik dari segi konsumsi enerji dan efektivitas biaya.Â
Perbedaan utama dari kontainer dan VM ada pendekatan arkitektural.Â
Virtual Mesin
Suatu VM pada dasarnya adalah satu emulasi dari komputer sesungguhnya yang mengeksekusi program seperti halnya komputer yang sesungguhnya. VM dijalankan di atas dari fisikal mesin menggunakan "hypervisor". Suatu hypervisor, sebaliknya dijalankan pada host mesin atau "bare-metal".
Suatu hypervisor adalah suatu perangkat lunak, firmware, atau hardware dimana VM dijalankan di atasnya.Â
Sedangkan hypervisor dijalankan pada fisikal mesin yang disebut sebagak "host machine". Host mesin menyediakan VM sumber day, termasuk RAM dan CPU. Sumber daya dibagi di antara VM dan dapat didistribusikan sesuai kebutuhan. Â Jika suatu VM yang sedang jalan membutuhkan banyak sumber daya, maka VM akan mendapakkan alokasi yang lebih banyak dibanding VM yang lain.
VM yang sedang jalan pada host mesin (menggunakan hypervisor) juga sering disebut sebagai "guest machine".  Guest mesin menggunakan  baik aplikasi dan apa saja yang perlu untuk menjalankan aplikasi (contoh: system binari dan libraries) - artinya ia juga memiliki guest operasi sistem yang lengkap. Dari dalam, guest mesin inii bertindak sebagai unit yang mempunyai sumber daya yang terdedikasi. Dari, kita mengenalnya sebagai VM - yang berbagai sumber daya yang disediakan oleh host mesin.
Suatu guest mesin dapat dijalankan melalui hosted hypervisor atau bare-metal hypervisor. Ada beberapa perbedaan penting di antara ketiganya.
Suatu hosted virtualization hypervisor dijalankan pada sistem operasi dari host mesin. Sebagai contoh, suatu komputer dengan OSX dapat mempunya VM (baik VirtualBox atau VMware) dipasang di atas system operasi. VM ini tidak mempunyai akses langsung ke hardware, harus melalui operasi system host (dalam hal ini OSX)
Keuntungan dari hosted hypervisor adalah hardware dibawahnya kurang begitu penting. Host sistem operasi bertanggung jawab atas hardware driver dan bukan hypervisor, karena itu dinggap lebih "hardware compabitibility". Disamping itu, tambahan layer di antara hardware dan hypervisor menciptakan lebih banyak sumber daya overhead, yang menggurangi kinerja VM.Â
Suatu lingkungan bare metal hypervisor menangani masalah kinerja dengan memasang pada dan menjalankan dari hardware host mesin. Karena ia antarmuka langsung dengan hardware, Â tidak memerlukan operasi system host untuk menjalankannya. Â Dalam hal ini, hal pertama yang dipasang pada host mesin server sebagai operasi system adalah hypervisor.
 Tidak seperti halnya hosted hypervisor, bare-metal hypervisor mempunyai device drivernya sendiri dan berinteraski dengan setiap komponennya secara langsung baik I/O, processing atau tugas spesifik OS lainnya. Hal ini membawa kinerja yang lebih baik, skabilitas dan stabilitas. Kekurangannya adalah keterbatasan hardware kompabilitas karena hypervisor hanya dapat memiliki device driver built in yang terbatas.
VM memiliki sistem operasi virtual sendiri, hypervisor memainkan peran penting dalam menyediakan platform bagi VM untuk mengelola dan menjalankan sistem operasi tamu ini. Hal ini memungkinkan komputer host untuk berbagi sumber daya mereka di antara mesin virtual yang berjalan sebagai tamu di atas mereka.
Seperti yang Anda lihat dalam diagram, VMs mengemas perangkat keras virtual, kernel (yaitu OS) dan ruang pengguna untuk setiap VM yang  baru.
Kontainer
Tidak seperti VM yang menyediakan virtualisasi perangkat keras, suatu Kontainer menyediakan virtualisasi tingkat sistem operasi dengan mengabstraksi "ruang pengguna".
Untuk semua maksud dan tujuan, Kontainer terlihat seperti VM. Misalnya, kontainer memiliki ruang pribadi untuk diproses, dapat menjalankan perintah sebagai root, memiliki antarmuka jaringan pribadi dan alamat IP, memungkinkan rute custom dan aturan iptable, dapat me-mount sistem file, dan lain-lain.

Satu perbedaan besar antara container dan VM adalah bahwa container * berbagi * kernel sistem host dengan container yang lain.
Follow Instagram @kompasianacom juga Tiktok @kompasiana biar nggak ketinggalan event seru komunitas dan tips dapat cuan dari Kompasiana
Baca juga cerita inspiratif langsung dari smartphone kamu dengan bergabung di WhatsApp Channel Kompasiana di SINI