Virtualios mašinos vs konteineriai: išsamus palyginimas
Suglumino debesies virtualios mašinos ir konteinerių talpinimo technologijos? Skaitykite toliau, kad sužinotumėte, kuo jie išsiskiria, kur slypi jų stipriosios pusės ir kaip efektyviausiai panaudoti kiekvieną metodą.

Virtualios mašinos ir konteinerių išdėstymas yra du būdai, kaip vienoje platformoje įdiegti kelias vykdymo aplinkas.
Šios dvi technologijos leidžia lengvai sukurti virtualią aplinką, kuri yra modeliuojama pagal fizinę infrastruktūrą, o tai leidžia vartotojui optimizuoti išteklius.
Šiame straipsnyje nagrinėjami jų panašumai ir skirtumai. Taip pat apžvelgiami jų pranašumai ir trūkumai įvairiais naudojimo atvejais, kad būtų galima geriau suprasti, kaip ir kada geriausia juos panaudoti.
Hipervizoriai ir konteinerių varikliai
Daugelis svetainių ir interneto programų pradėjo veikti bendrojo prieglobos aplinkoje, kur dvi ar daugiau programų dalijosi visais fizinio serverio ištekliais. Dėl to kilo problemų, nes viena pažeista programa gali turėti įtakos kitai – tiek saugai, tiek našumui. Lengviausias sprendimas tuomet buvo paleisti dedikuotą serverį, o tai, deja, padidino išlaidas.
Šias problemas išsprendė virtualizacija. Pirma, hipervizoriai leido fiziniam serveriui priglobti daugiau nei vieną virtualųjį serverį, priklausomai nuo to, kiek procesorių ir RAM turi. Tai leidžia skirtingoms programoms, svetainėms ar klientams veikti izoliuotoje aplinkoje už mažesnę kainą, nereikalaujant tam skirto fizinio serverio.
Taip pat atsirado konteinerių, siekiant dar labiau sumažinti išlaidas ir išspręsti daugybę problemų, su kuriomis kūrėjai susiduria dirbdami su virtualiosiomis mašinomis. Abi technologijos šiandien egzistuoja greta viena kitos, kiekviena turi savo stipriąsias ir silpnąsias puses.

Kas yra virtuali mašina?
Virtualios mašinos arba VM yra virtualizuotos kompiuterio vykdymo aplinkos forma, kuri imituoja fizinę sistemą. Virtuali mašina naudoja specializuotą programinę įrangą, vadinamą a hipervisorius gauti prieigą prie konkrečių fizinės infrastruktūros išteklių, leidžiančių jai veikti kaip nepriklausomai operacinei sistemai.
Virtualios mašinos operacinė sistema vadinama svečių OS, o operacinė sistema fiziniame serveryje vadinama pagrindine OS. Pagrindinė OS gali priglobti kelis svečių OS egzempliorius, atsižvelgiant į tai, kiek atminties, procesoriaus branduolių ir saugyklos turi.
Virtualių mašinų privalumai ir trūkumai
Argumentai "už"
- Izoliacija: Virtuali mašina yra labai izoliuota aplinka, kurią galite naudoti daugeliu atvejų. Viskas, kas vyksta jo viduje, neturės įtakos kitoms virtualioms mašinoms ir atvirkščiai. Priežastis ta, kad kiekviena virtuali mašina veikia vienoje ar daugiau tam skirtų procesoriaus gijų.
- Aparatinės įrangos optimizavimas: Virtualios mašinos leidžia vartotojams paleisti daug operacinių sistemų viename aparatinės įrangos serveryje. Šis gebėjimas leidžia sutaupyti išlaidų.
- Momentinės nuotraukos ir atšaukimai: bet kuriuo metu galite užfiksuoti virtualios mašinos vykdymo būseną. Šis procesas vadinamas momentine nuotrauka, o atšaukimas yra tiesiog funkcija, grąžinanti virtualią mašiną į tą tikslią vykdymo būseną.
- Lankstumas: galite padidinti arba sumažinti VM mastelį ir lengvai jas perkelti, todėl jos yra ideali platforma programoms kurti ir testuoti.
Trūkumai
- Ribotas mastelio keitimas: Nors galite keisti virtualių mašinų mastelį, jas nėra taip lengva keisti kaip konteinerius.
- sudėtingumas: Virtualioms mašinoms valdyti reikia daugiau papildomų išlaidų, pvz., naujinimų ir stebėjimo, ir dėl to gali kilti problemų diegiant didelio masto.
- licencijavimas: Naudojant kelias virtualias mašinas gali tekti patirti licencijavimo išlaidų.
Kas yra konteineris?
Konteineris taip pat yra virtualizacijos technologija, leidžianti vartotojui kurti ir palaikyti izoliuotas vykdymo aplinkas fizinėje sistemoje, nepasikliaujant sistemos hipervizoriumi ar tiesiogine prieiga prie procesoriaus ir kitų išteklių.
Konteineris sukuriamas, kai vykdomas duomenų failo turinys. Šis failas vadinamas konteinerio vaizdu ir apima visas bibliotekas, kurias reikia įdiegti pagrindinio kompiuterio operacinėje sistemoje, kad būtų sukurtas norimas konteineris.
Konteineriai yra lengvi ir užtikrina nuoseklią ir nešiojamą aplinką, kuri yra labai naudinga kuriant šiuolaikinę programinę įrangą. Jie taip pat gali būti vykdomi vienas šalia kito tame pačiame fiziniame pagrindiniame kompiuteryje, tiek, kiek gali palaikyti techninės įrangos specifikacijos.
Konteinerių privalumai ir trūkumai
Argumentai "už"
- Nuosekli aplinka: Talpyklos turinys yra fiksuotas ir tikslus. Tai reiškia, kad ji visada sukurs tą pačią vykdymo aplinką, kai tik bus paleista.
- Efektyvumas naudojant išteklius: Konteineriai naudoja tik tiek išteklių, kiek jiems reikia. Nereikia iš anksto nustatyti procesorių ar skirti atminties. Tai taip pat leidžia supakuoti daugiau konteinerių.
- Greitas diegimas: Konteineriai yra lengvi ir greitai panaudojami, dažnai užtenka vos kelių sekundžių, kad pradėtų veikti.
- Izoliacija: Konteineris yra izoliuota vykdymo aplinka. Nors ji nėra tokia izoliuota kaip virtualios mašinos, ji vis tiek yra geriausias sprendimas paleisti mikropaslaugas, kuriose pagrindinis dėmesys skiriamas tik vienam darbui ir gerai jį atlikti.
Trūkumai
- Ribotas senų programų palaikymas: Jei dirbate su programa, kuriai reikia specifinių operacinės sistemos ar aparatinės įrangos funkcijų, konteineris gali būti ne geriausias sprendimas.
- Trumpalaikiai duomenys: Viskas apie konteinerius sunaikinama, kai konteineris sunaikinamas, įskaitant duomenis. Tačiau yra būdų, kaip turėti nuolatinius duomenis su konteineriais.
- Branduolio priklausomybė: Konteinerių varikliai veikia pagrindinėje operacinėje sistemoje, o tai riboja tai, ką galite padaryti aplinkoje.
Virtualių mašinų ir konteinerių skirtumai
| Virtuali mašina | Konteineriai | |
|---|---|---|
| architektūra | Apima operacinę sistemą su bibliotekomis | Apima tik reikalingas bibliotekas |
| Vaizdo dydis | 10 - 150 GB | 5 - 600 MB |
| Izoliacija ir saugumas | Santykinai izoliuotas ir saugus | Labai izoliuotas ir saugus |
| Diegimo ir paleidimo laikas | Vidutiniškai 1-3 minutes | Vidutiniškai 1-3 sekundes |
| Išteklių panaudojimas | vidutinis | aukštas |
| išlaidos | Aukštesnis | žemas |
| Orkestravimas | Gerai | Labai efektyvus |
| Naudojimo atvejai | Izoliavimas, senos sistemos, GUI | Mikro paslaugos, DevOps, mastelio keitimas |
- architektūra: Virtualios mašinos skirtos kelioms operacinėms sistemoms veikti greta. Kiekviena OS yra visiškai izoliuota ir jai skiriama fiksuota išteklių suma. Kita vertus, konteineriai veikia toje pačioje operacinėje sistemoje, bet skirtingose virtualiose aplinkose. Kiekvienas konteineris apima tik jam reikalingas bibliotekas ir bendrina turimus aparatinės įrangos išteklius su kitais.
- Vaizdo dydis: mažiausias konteinerio vaizdas yra 4.8 MB Docker failas, kuris suglaudus sumažėja iki 2 MB. Dauguma konteinerių failų vidutiniškai sudaro kelis šimtus megabaitų, o didžiausi – apie 700 MB. Kita vertus, virtualios mašinos prasideda maždaug nuo 10 GB ir gali siekti 150 GB.
- Izoliacija ir saugumas: Virtualios mašinos veikia savo išskirtinėmis procesoriaus gijomis ir pasiekia ribotą fizinės RAM sritį. Dėl to jie yra mažiau jautrūs atakoms tiek iš vidaus, tiek iš išorės. Kita vertus, konteineriai turi bendrą operacinę sistemą, todėl jie yra labiau jautrūs atakoms, nepaisant jų saugos įgyvendinimo.
- Diegimo ir paleidimo laikas: Kai reikia įkelti ir įdiegti daugiausia megabaitų duomenų ir nereikia paleisti sistemos iš diskų, konteineriai įveikia virtualias mašinas, kai kalbama apie greitį. Įprastam konteineriui įdiegti reikia tik kelių sekundžių, o virtualiai mašinai prireiks minučių.
- Išteklių panaudojimas ir išlaidos: Virtualios mašinos turi mažesnį fizinio serverio tankį, nes kiekvienai VM reikia tam tikrų procesoriaus, RAM ir saugojimo išteklių. Konteinerių tankis sistemoje priklauso nuo jų bendro išteklių naudojimo.
- Orkestravimas: Abi sistemos gali būti suderintos naudojant tinkamas programas. „Docker Swarm“ ir „Kubernetes“ yra populiarūs konteineriuose, o VM taip pat galima organizuoti naudojant „Kubernetes“ sprendimus.
Kuris sprendimas jums tinka?
Pamatę konteinerių ir virtualių mašinų skirtumus, turėtumėte taip pat pripažinti, kad kiekviena sistema turi scenarijų, kada ji veikia geriausiai. Taigi, toliau pateikiamas sąrašas, kada naudoti konteinerius ir kada naudoti VM.
Kada naudoti konteinerius
- Mikro paslaugos: Jei naudojate paskirstytą taikomųjų programų architektūrą, kurios skirtingos dalys skirtos veikti atskirai kaip mikropaslaugos, konteineris tikriausiai yra geriausias būdas.
- Aplinkos kontrolė: Konteineriai taip pat idealiai tinka situacijose, kai reikia visiškai kontroliuoti aplinką, nes kiekviename konteinerio vaizde yra tiksli ir 100 % pakartojama vykdymo aplinka.
- Greitas diegimas: konteinerius galima įkelti vos per kelias sekundes, todėl jie yra ideali technologija greitai diegti programas pagal poreikį. Tai apima programinės įrangos testavimą, orkestravimą ir gamybos sistemų mastelio keitimą.
- Efektyvus išteklių naudojimas: Dėl savo konstrukcijos konteineriai gali geriau padidinti mašinos aparatinės įrangos išteklius, nes kiekvienas konteineris yra lankstus, atsižvelgiant į procesoriaus ir atminties naudojimą.
- Horizontalus ir vertikalus mastelio keitimas: konteineriai puikiai tinka tiek horizontalioms, tiek vertikalioms mastelio keitimo situacijoms. Horizontalus mastelio keitimas yra paprastas daugiau konteinerių paleidimas, kad būtų galima apdoroti didesnes darbo eigas, o vertikalus mastelio keitimas yra procesoriaus ir atminties paskirstymas tam tikrai talpyklai arba konteinerių grupei.
Kada naudoti virtualias mašinas
- Stipri taikymo izoliacija: Virtuali mašina yra geras sprendimas, kai reikia vykdyti kodą aplinkoje, kuri yra visiškai izoliuota nuo kitų procesų. Pavyzdžiui, veikia programinė įranga, kuri tikriausiai yra užkrėsta kenkėjiška programa.
- GUI: Virtuali mašina gali būti tinkamas sprendimas, kai reikia paleisti programą, kuri sąveikauja per grafinę vartotojo sąsają.
- Vertikalus mastelis: galite lengvai padidinti VM programų mastelį vertikaliai padidindami jų procesoriaus ir atminties paskirstymą iš virtualizacijos programinės įrangos.
- Prieiga prie aparatūros lygio: Virtualios mašinos taip pat puikiai tinka programoms, kurioms reikia daug išteklių arba kurioms reikalinga tiesioginė prieiga prie procesoriaus arba konkrečios aparatinės įrangos konfigūracijos.
- Pasenusios programos: kai kurios programos priklauso nuo konkrečių bibliotekų arba operacinės sistemos išteklių. Taigi, jie geriausiai atliekami tokioje aplinkoje, kokios jiems reikia.
Virtualios mašinos ir talpinimo įrankių sąrašas
Yra daug įrankių ir sprendimų, skirtų virtualioms mašinoms ir konteineriams kurti ir valdyti. Taigi, čia yra trumpas populiariausių sąrašas.

- "Oracle VirtualBox": nemokama ir atvirojo kodo virtualios mašinos tvarkyklė
- dokininkas: atvirojo kodo konteinerių kūrimas ir valdymas
- Kubernetes: atvirojo kodo konteinerių orkestravimo sistema
- Konteineris: sudėtinio rodinio vykdymo laikas pažengusiems vartotojams
- VMware Workstation: paleiskite virtualias mašinas „Linux“ ir „Windows“.
- „Microsoft Hyper-V“: paleiskite virtualias mašinas sistemoje Windows
- RedHat Openshift: įmonės lygio virtualizacijos ir debesų valdymo platforma
- klajoklių: Orkestravimo valdymui
- Apache Mesos: atvirojo kodo klasterių tvarkyklė
- rančos savininkas: kelių Kubernetes klasterių valdymui
- "Google Cloud: Google Kubernetes variklis
- AWS: „Amazon“ žiniatinklio paslaugos, įskaitant be serverio Fargate konteinerių valdytojas
Dažnai užduodami klausimai
Štai keletas dažniausiai užduodamų klausimų apie debesies virtualias mašinas ir konteinerines programas.
Kas yra saugesnis, virtuali mašina ar konteineris?
Virtuali mašina yra techniškai saugesnė nei konteineris.
Kuo skiriasi virtualių mašinų ir konteinerių dydis?
Virtualios mašinos paprastai yra gigabaitų dydžio, o konteineriai paprastai yra megabaitų dydžio.
Ar virtualias mašinas ir konteinerius galima naudoti kartu?
Taip, galite paleisti konteinerio variklį virtualioje mašinoje.
Kuris yra labiau keičiamas, virtuali mašina ar konteineris?
Konteinerius lengviau ir greičiau keisti nei virtualias mašinas.
Ar konteinerius galima perkelti iš vieno kompiuterio į kitą?
Taip, konteinerį galima perkelti į kitą pagrindinį kompiuterį naudojant tinkamą orkestravimo platformą.
Kiek virtualių mašinų galiu paleisti viename pagrindiniame kompiuteryje?
Tai daugiausia priklauso nuo turimų procesoriaus branduolių ir RAM kiekio. Ir tam tikru mastu tai taip pat priklauso nuo darbo krūvio tipo ir hipervizoriaus efektyvumo.
Išvada
Pasiekėme šio debesies virtualiųjų mašinų ir konteinerių palyginimo pabaigą. Ir kaip matėte, abi technologijos yra vertingos diegiant ir tvarkant programas debesyje.
Tačiau jūsų pasirinkimas tarp dviejų visada priklausys nuo jūsų poreikių. Bet kuriuo metu galite geriau naudoti virtualią mašiną, konteinerių sudarymo metodą arba abu.




