Docker vs Virtual Machines
Ang virtualization ng pisikal na hardware ay isa sa mga pinaka-promising na mga uso ng ika-21 siglo. Nagkaroon ng isang tahimik na kasunduan na ang mga modernong computing ay kailangang lumipat sa kabila ng mga limitasyon ng pisikal na hardware. Bilang dalawa sa mga pinakatanyag na solusyon sa virtual na mapagkukunan sa merkado, Docker at virtual machine (VM) ay naging instrumento sa pagmamaneho ng paglipat patungo sa virtualized management management.
Gayunpaman maraming mga tao ang natigil sa kung aling pagpipilian ang sasama. Depende sa kung sino ang tatanungin mo, ang Docker at virtual machine bawat isa ay may sariling natatanging kalamangan. Sa artikulong ito, titingnan namin ang Docker vs virtual machine debate upang makita kung aling mga pakinabang ang maaaring dalhin ng bawat isa sa iyong samahan.
Ano ang Docker?
Docker ay isang bukas na tool na mapagkukunan na gumagamit ng mga lalagyan upang lumikha, lumawak, at pamahalaan ang mga ipinamamahaging aplikasyon. Ang mga nag-develop ay gumagamit ng mga lalagyan upang lumikha ng mga pakete para sa mga application na kasama ang lahat ng mga pangunahing sangkap (tulad ng mga aklatan) na kinakailangan upang patakbuhin ang application sa paghihiwalay. Tinali ang lalagyan mula sa makina na pinapatakbo nito na tinitiyak na tatakbo ang application kahit na ang mga gumagamit ay nagpapatakbo ng mga pasadyang setting sa kanilang Linux machine, at nagsisilbi upang mabawasan ang paggamit ng mga mapagkukunan ng computer.
Mula pa nang mailabas si Docker noong 2014 ay nakamit nito ang isang kritikal na katayuan. Maraming mga organisasyon ang pumili ng paggamit ng Docker sa mga virtual machine dahil sa mga benepisyo ng pagganap na inaalok nito. Ngayon ang mga kumpanya tulad ng Visa at PayPal ay nagtalaga ng Docker upang makatulong upang pamahalaan ang kanilang mga aplikasyon.
Ano ang isang Virtual Machine?
A virtual machine ay isang file (madalas na tinatawag na a hypervisor) na kumikilos bilang isang pisikal na computer. Isang virtual machine gumagamit ng pisikal na mapagkukunan ng aparato na pinapatakbo nito upang kopyahin ang kapaligiran ng isang pisikal na aparato. Tulad ng anumang iba pang programa, ang virtual machine ay may sariling window sa iyong aparato. Maaari kang magpatakbo ng maraming virtual machine sa isang aparato.
Habang ang isang virtual machine ay gumagamit ng mga mapagkukunan ng computer upang gumana ito aktwal na nagbibigay ng sariling virtual hardware. Kasama sa virtual na hardware ng isang virtual machine CPU, memorya, hard drive, at mga interface ng network. Upang mapanatili ang computer na mahusay, ang virtual na hardware na ito ay pagkatapos ay na-mapa sa pisikal na hardware ng aparato.
Ang mga virtual na makina ay nakahiwalay mula sa sistema ng pisikal na aparato at nagpapatakbo sa loob ng isang sandbox. Sa madaling salita, ang isang virtual na makina ay ganap na nakapaloob sa sarili. Ginagawa nitong perpekto ang mga ito para sa paglikha ng mga backup at pagpapatakbo ng software. Ang pinakasikat na mga produkto sa merkado ay VMWare at VirtualBox.
Bakit kailangan kong Gumamit ng Docker?
Ang isa sa mga pangunahing dahilan na ginagamit ng mga kumpanya ng Docker ay bilang isang kahalili sa mga virtual machine. Ginagamit bilang isang kahalili si Docker dahil sila mas magaan sa mga tuntunin ng mga mapagkukunan kaysa sa virtual machine. Ang mga lalagyan ay nagbabahagi ng mga operating system samantalang ang mga virtual machine ay idinisenyo upang tularan ang virtual hardware. Sa pamamagitan ng pagbabahagi ng mga operating system, ang mga application ng Docker ay maaaring tumakbo habang kumonsumo ng isang bahagi ng mga mapagkukunan ng isang virtual machine.
Ginagamit ng Docker ang Docker engine na nakatira sa isang halimbawa ng Linux sa halip na ang virtual na masinsinang mapagkukunan na ginagamit ng mga virtual machine. Ang istraktura na ito ay nangangahulugan na ang mga lalagyan ng Docker ay may potensyal na panatilihin ang higit sa limang beses ang halaga ng mga pagkakataon sa application ng server na maaari mong gamit ang isang virtual machine. Ang malawak na pag-aampon ng Docker ay tinulungan din ng katotohanan na ang mga developer ay maaaring magdagdag ng kanilang sariling code upang ipasadya at i-deploy ang mga application na mahilig. Ang mga application na ito ay maaaring ma-deploy nang diretso sa mga makina o sa ulap.
Bakit Kailangan Ko ng Virtual Machine?
Kahit na ang Docker ay may kaugnayan sa yapak ng mapagkukunan nito, ang mga virtual machine ay mananatiling hindi kapani-paniwalang mahalaga sa mga modernong samahan. Nagbibigay pa rin sila ng isang maaasahang paraan upang limitahan ang mga gastos na dulot ng pisikal na hardware. Virtualizing iyong imprastraktura sa virtual machine ay gumagawa para sa mas mahusay na paggamit ng iyong mga mapagkukunan ng network. Halimbawa, hindi mo na kailangang iwaksi ang kapangyarihan at mga mapagkukunan ng tagahanga upang mapanatili ang isang virtual machine sa paraang nais mong isang pisikal na computer.
Maaari ka ring magbigay ng mga mapagkukunan nang mas mahusay sa mga virtual machine. Ang mga virtual machine ay maaaring lumipat mula sa server sa server upang matiyak na ang mga mapagkukunan ng computing ay kumakalat nang pantay-pantay sa mga aparato. Ang mga administrador ay maaaring mag-juggle ng mga virtual machine tungkol sa gayon ang mga pisikal na imbakan at mga kakayahan sa pagproseso ay inilalaan nang pantay-pantay sa pagitan ng maraming machine.
Ang mga virtual machine ay bumababa rin sa panganib ng iyong mga imprastraktura na nabigo. Sapagkat ang isang pisikal na aparato ay maaaring humarap sa pagkasira ng pagganap at mabigo sa paglipas ng panahon, ang virtual hardware ay hindi. Bilang kinahinatnan, maraming mga administrador ang nagsimulang gumamit ng virtual machine bilang isang solusyon sa pagbawi sa sakuna at i-back up ang kanilang data.
Docker vs Virtual Machines Head hanggang Head
Mas Mahusay | Mas Mahusay |
Ang mga VM ay nagpapatakbo ng kanilang sariling OS | Ang mga lalagyan ay nagbabahagi ng host OS |
Hardware Virtualization | Virtualization ng OS |
Mas ligtas (ihiwalay) | Hindi gaanong ligtas (Proseso na antas ng paghihiwalay) |
Pagganap
Tulad ng nakikita mo, ang Docker ay may ilang likas na pakinabang na naihatid ng istraktura nito. Ang isang lalagyan ay maaaring magbahagi ng isang librarya ng kernel at application sa paraang hindi makagawa ng mga virtual machine. Gayundin, Ang Docker ay nangangailangan ng mas kaunting mga mapagkukunan ng computing kaysa sa mga virtual machine na naghahatid ng isang mas mahusay na karanasan sa loob ng application.
Sa real-time na Docker ay hindi gaanong masinsinang mapagkukunan at maaaring magsimula nang mas mabilis kaysa sa mga virtual machine. Ang dahilan ay ang mga virtual machine ay kailangang mag-load ng isang OS sa bawat pagsisimula. Katulad nito, hindi mo kailangang maglaan ng mga mapagkukunan sa mga lalagyan tulad ng ginagawa mo sa mga virtual machine.
Pamamahala
Sa mga tuntunin ng pamamahala, ang bawat isa sa mga teknolohiyang ito ay nag-aalok ng isang mas nababaluktot na pamamaraan patungo sa paglalaan ng mapagkukunan. Gayunpaman, ang parehong mga teknolohiyang ito ay kailangan pa ring pamamahala nang epektibo upang gumana nang maayos sa loob ng iyong kapaligiran. Sa mga lalagyan, bumababa ito sa pamamahala ng mga alalahanin sa seguridad at siguraduhin na ang nakabahaging operating system ay hindi makatagpo ng anumang mga pagkakamali.
Sa mga virtual machine, ang pagiging kumplikado ay bumababa sa pamamahala ng mga virtual na mapagkukunan. Halimbawa, ikaw kailangan ang bandwidth at kapasidad sa pagproseso upang suportahan ang mga virtual machine (lalo na kung nagpapatakbo ka ng maraming virtual machine sa isang aparato). Kung hindi mo ilalaan ang mga kinakailangang mapagkukunan pagkatapos ang virtual machine ay hindi tatakbo nang epektibo.
Kailangang isaalang-alang ng tagapangasiwa kung paano nila ipinagkasundo ang paggamit ng virtual machine gamit ang mga mapagkukunan na magagamit sa buong network. Habang ang kakayahang ilipat ang virtual machine ay mahusay para sa paggamit ng mga mapagkukunan nang mas mahusay, dala nito kasama ang pangangailangan na tiyakin na ang mga mapagkukunan ay kumakalat nang pantay-pantay. Totoo rin ito sa Docker ngunit mas kaunti sa isang isyu dahil sa magaan na pagganap nito.
Siyempre, kahit na pinamamahalaan mo nang maayos ang iyong mga mapagkukunan ay mayroon pa ring bilang ng mga panganib na nauugnay sa virtual machine. Nariyan ang peligro ng labis na magagamit na mga mapagkukunan o isang kabiguan sa hardware na nagpupunas ng isang bungkos ng mga virtual machine sa isang lakad. Inilalagay nito ang labis na presyon sa administrator upang manatili sa itaas ng bawat maliit na detalye ng paggamit. Ang problemang ito ay hindi natatangi sa mga virtual machine ngunit tiyak na mas maraming problema ito para sa kanila kaysa sa mga lalagyan ng Docker.
Portability
Ang portability ng bawat teknolohiya ay nauugnay sa mga naghahanap upang ma-optimize ang mga mapagkukunan ng networking. Ang mga lalagyan ng docker ay mga package na may sarili na nagpapatakbo ng kinakailangang aplikasyon. Ang mga lalagyan ng pantalan ay maaaring mai-port nang madali dahil wala silang hiwalay na OS. Kapag sila ay nai-port maaari na silang magsimula sa isang bagay ng mga segundo na ginagawa silang mas portable na alternatibo.
Sa kaibahan, ang mga virtual machine ay hindi portable dahil ang bawat isa ay may sariling OS. Ginagawa nitong mahirap ang mga ito dahil ang OS ay hindi maipapakita sa ibang platform at maayos na gumana. Sa mga kapaligiran kung saan kailangan mong mag-deploy ng iba’t ibang mga application sa iba’t ibang mga problema, mas mahusay ka sa Docker. Ang paghihiwalay ng operating system mula sa operating system ng host aparato ay nagsisiguro na ang mga aplikasyon ay maaaring tumakbo nang walang anumang mga hindi kinakailangang pagkagambala.
Seguridad
Isa sa mga pangunahing lugar ng pagtatalo sa pagitan ng mga sumusuporta sa mga virtual machine at ang Docker ay kung saan ang pag-setup ay mas ligtas. Ito ay isang partikular na kumplikadong lugar dahil maraming mga kadahilanan upang talakayin mula sa mga likas na kahinaan ng Docker hanggang sa solong punto ng pagkabigo ng isang hypervisor ng virtual machine. Sa bahaging ito, titingnan namin ang dalawang pinakadakilang banta sa seguridad ng bawat isa sa mga teknolohiyang ito.
Paghiwalay ng OS
Parehong Docker at virtual machine na ihiwalay ang mga aplikasyon mula sa isa’t isa. Nangangahulugan ito na kung ang isang aplikasyon ay binubuo kung hindi ito makakaapekto sa iba pang mga aplikasyon. Sa teorya, nagbibigay ito ng perpektong proteksyon ngunit ang Docker ay may isang napapailalim na problema; ang lahat ng mga application ay nagbabahagi ng isang operating system. Kung ang operating system ay nilabag mula sa isang nakompromiso na aplikasyon pagkatapos ang isang pag-atake ay maaaring makaapekto sa lahat ng mga lalagyan nang sabay-sabay.
Ang mga virtual machine ay tumigil sa problemang ito pinapanatili ang OS na ginagamit upang makontrol ang application na hiwalay mula sa hypervisor na nakikipag-ugnay sa hardware. Mayroong isang OS na maaaring makisalamuha ng gumagamit upang magamit ang application ngunit hindi ito pinahihintulutan silang makipag-ugnay sa hardware. Nangangahulugan ito na kung ang isang aplikasyon ay may kasalanan ay lubos na hindi malamang na magkaroon ng masamang epekto sa hardware ng host system.
Sa ganitong kahulugan, ang mga virtual machine ay nag-aalok ng higit na seguridad laban sa mga pagkakamali ng OS at mga paglabag sa seguridad kaysa sa mga lalagyan ng Docker. Ang modelo ng paghihiwalay ng application na ginagamit ng Docker upang i-optimize ang paggamit ng mapagkukunan ay dumating sa gastos ng seguridad. Ang mga virtual machine ay may kalamangan dahil pinapanatili nila ang OS na hiwalay mula sa hardware upang mabawasan ang anumang panganib ng pinsala.
Single point of Failure: Hypervisor
Gayunpaman, dahil lamang ang mga virtual machine ay mas ligtas sa mga tuntunin ng paghihiwalay ng aplikasyon ay hindi nangangahulugang hindi sila magiging walang sariling mga kahinaan. Sa virtual machine ang mga hypervisors ay isang solong punto ng pagkabigo. Kung nabigo ang hypervisor pagkatapos ang isang tonelada ng mga aplikasyon ay maaaring bumaba sa isang nahulog na swoop. Nangangahulugan ito na kung ang isang cyber attacker ay nais na makapinsala sa iyong network pagkatapos ay maaari silang magpadala ng malware sa VM.
Sa paghahambing, Ang mga lalagyan ng pantalan ay walang isang punto ng pagkabigo. Kahit na ang solong punto ng pagkabigo ay may potensyal na iwanan ang mga application na mahina, ang mga hypervisors ay napakahirap na masira. Habang ang isang cyber attacker ay maaaring lumabag sa isang hypervisor ito ay hindi malamang dahil sa pagiging kumplikado ng code na ginamit. Sa puntong ito, ang pagkabigo ng hypervisor ay higit pa sa isang potensyal na lugar ng kawalan ng kapanatagan kaysa sa isang malawak na pinagsasamantalang entry point.
Gastos
Ang gastos ng Docker at virtual machine ay isa pang lugar na mahirap sukatin. Ang 451 Pananaliksik ay nagmumungkahi na ang mga lalagyan ay may mas mababang TCO o kabuuang halaga ng pagmamay-ari kaysa sa virtualization ng hardware. Ang dahilan sa likod nito ay ang mga lalagyan ng Docker ay mas mahusay na gumamit ng mga mapagkukunan nang mas mahusay. Ang bawat virtual machine ay may sariling operating system na kailangang mapanatili ng host system. Nangangailangan ito ng mga mapagkukunan sa pag-compute na humihimok sa pangmatagalang mga gastos sa pisikal na hardware.
Tinatanggal ng Docker ang problemang ito sa pamamagitan ng paggamit ng isang operating system para sa lahat ng mga aplikasyon nito. Ang mga lalagyan ay nagbabahagi ng isang OS sa isang pagtatangka na mabawasan ang mga kinakailangan sa mapagkukunan. Kapag nagpapatakbo ng maraming mga application na ito ay partikular na may kaugnayan dahil maaari kang magpatakbo ng maraming iba’t ibang mga aplikasyon sa isang operating system lamang. Sa pamamagitan ng paghahambing, ang mga virtual machine ay magkakaroon ng isang operating system para sa bawat aplikasyon na nangangahulugang maraming mapagkukunan na kailangan mong bayaran.
Ang direktang pag-save ng gastos ng mga lalagyan ng Docker ay mahirap sukatin, ngunit mayroong isang bilang ng mga kadahilanan na isinasaalang-alang. Makakakuha ka ng higit pang mileage sa iyong kasalukuyang imprastruktura ng network na may mga lalagyan kaysa sa mga virtual machine. Gayundin, kung kailangan mong mag-upscale maaari mong gawin ito sa mas kaunting mga mapagkukunan habang kumukuha ng mas maraming kapangyarihan upang mapanatili ang mga virtual na makina.
Alin ang Dapat Ko Ginamit at Kailan?
Habang ang Docker ay may kalamangan na may kinalaman sa kahusayan at pagganap, huwag magkakamali sa pag-iisip na ang mga lalagyan ay likas na mas mahusay kaysa sa mga virtual machine. Ang mga docker at virtual machine ay may sariling mga pakinabang sa ilang mga sitwasyon. Ang pagtukoy kung ang isang application ay inilalagay sa loob ng isang lalagyan o isang virtual na machine ay nakasalalay nang lubos sa iyong mga kinakailangan sa paggamit. Sa seksyong ito, titingnan namin kung paano pumili sa pagitan ng dalawa.
Uri ng Application
Ang unang kadahilanan na dapat mong isaalang-alang kapag ang iyong pagpili ay ang uri ng application na nais mong i-deploy. Ang mga lalagyan ay idinisenyo upang mapanatili ang mga application na hindi nauugnay sa host operating system. Ang mga lalagyan ng docker ay para sa mga application na nais mong magpatakbo ng hindi isinasaalang-alang ng imprastruktura ng host system. Nangangahulugan ito na kung nais mong suportahan ang mga naka-embed na system na mas malapit na isama ang aparato ng host, mas mahusay kang pumili ng isang virtual machine.
Laki
Ang susunod na kadahilanan na dapat mong isaalang-alang kapag pumipili sa pagitan ng dalawa ay ang laki ng iyong aplikasyon. Ang halaga ng mga mapagkukunan ng computing na kinakailangan ng iyong aplikasyon upang epektibong tumakbo ay matukoy kung alin ang kailangan mong piliin. Kung nais mong suportahan ang mga application na kailangan lamang ng isang makina upang tumakbo sa isang computer tulad ng microservice pagkatapos ay isang lalagyan ng Docker ang magiging natural na pagpipilian. Sa kaibahan, ang isang virtual machine ay magiging mas mahusay na pagpipilian para sa mataas na mga serbisyo sa priority tulad ng mga database.
Gumamit ng Mga Kaso
Imprastraktura | Hindi | Oo |
Mga Hukasan sa Kapaligiran sa Lalagyan | Hindi | Oo |
Mga Databases | Hindi | Oo |
Mga Pangkat na Apps | Oo | Hindi |
Microservice | Oo | Hindi |
Mga Aplikasyon sa Web | Oo | Hindi |
Tulad ng nakikita mo, ang mga virtual machine ay may kalamangan sa tatlong pangunahing kaso ng paggamit: imprastraktura, mga host ng container environment, at mga database. Ang pangunahing lugar ay may imprastraktura. Ang mga virtual machine ay maaaring lumikha ng imprastruktura ng network sa anyo ng mga ruta at mga firewall sa paraang hindi posible sa Docker. Ang mga virtual machine ay may kakayahang makipag-ugnay sa antas ng virtual na hardware at paganahin ang gumagamit na gumawa ng mga pagbabago sa imprastraktura. Ang mga virtual machine ay madalas na ginagamit bilang mga host container dahil sa kanilang kakayahang makihalubilo sa hardware.
Sa kabilang kamay, Nag-aalok ang Docker ng magaan na paraan upang mag-deploy ng legacy apps sa halos anumang kapaligiran. Ang pagkakaroon ng mga aklatan na nilalaman kasama ang application ay ginagawang madali silang mag-deploy. Ang microservice ay mainam din para sa Docker dahil ang simpleng istraktura ng mga lalagyan ay nagbibigay ng maayos sa mga aplikasyon na may isang pangunahing gawain (kumpara sa isang application na may maraming iba’t ibang mga responsibilidad).
Docker vs Virtual Machines: Malaking Kasama
Kahit na ang Docker at virtual machine ay may kanilang mga pakinabang sa mga aparato ng hardware, ang Docker ay ang mas mahusay sa dalawa sa mga tuntunin ng paggamit ng mapagkukunan. Kung ang dalawang mga organisasyon ay ganap na magkapareho at nagpapatakbo ng parehong hardware, kung gayon ang kumpanya na gumagamit ng Docker ay makakapagtaguyod ng higit pang mga aplikasyon. Ang kakayahan ng Docker upang pamahalaan at mag-deploy ng mga application ay mga milya lamang kaysa sa virtual machine.
Sa huli ito ay bumababa sa panloob na arkitektura ng virtual machine. Ang pag-emulate ng pisikal na imprastraktura ay maaaring mas magaan kaysa sa isang aparato ng hardware, ngunit mayroon pa ring labis na taba upang mapanatili ang Docker. Walang alinlangan ang kapwa mga teknolohiyang ito ay kailangang pamahalaan ng pangangalaga upang mai-maximize ang pagiging epektibo.
Gayunpaman, huwag kang mahuli nang isulat ang mga virtual machine nang lubusan. Ang pagsasama-sama ng dalawang magkasama ay nagbibigay-daan sa iyo upang masakop ang isang hanay ng mga kaso ng paggamit at nagbibigay-daan sa iyo upang mapanatili ang iyong virtual na mga mapagkukunan bilang nababaluktot hangga’t maaari. Masisiyahan ka sa seguridad ng mga virtual machine sa partikular na mahalagang mga aplikasyon at ang mababang mga kinakailangan sa computing ng Docker din.
Tingnan din: Mga tool sa Pagmamanman at Software ng VM