Virtualni stroji proti vsebnikom: obsežna primerjava
Vas begajo virtualni stroji v oblaku in tehnologije kontejnerizacije? Preberite, če želite odkriti, kaj jih loči od drugih, kje so njihove prednosti in kako najučinkoviteje uporabiti vsak pristop.

Virtualni stroji in kontejnerizacija sta dva pristopa k uvajanju več izvajalskih okolij na eno platformo.
Ti dve tehnologiji olajšata ustvarjanje virtualnega okolja, ki je oblikovano po fizični infrastrukturi, kar uporabniku še dodatno omogoča optimizacijo virov.
Ta članek raziskuje njihove podobnosti in razlike. Preučuje tudi njihove prednosti in slabosti v različnih primerih uporabe, da vam da boljšo predstavo o tem, kako in kdaj najbolje uporabiti vsakega.
Hipervizorji in kontejnerski motorji
Številna spletna mesta in internetne aplikacije so začele živeti v okolju skupnega gostovanja – kjer sta dve ali več aplikacij delilo vse vire fizičnega strežnika. To je prineslo težave, saj lahko ena ogrožena aplikacija vpliva na ostale, tako na varnost kot na delovanje. Takrat je bila najlažja rešitev zagon namenskega strežnika, kar je na žalost prineslo višje stroške.
Virtualizacija je nastala, da bi rešila te težave. Prvič, hipervizorji so fizičnemu strežniku omogočili gostovanje več kot enega virtualnega strežnika – odvisno od tega, koliko procesorjev in RAM-a ima. To omogoča, da se različne aplikacije, spletna mesta ali odjemalci izvajajo v svojih izoliranih okoljih po nižji ceni, ne da bi potrebovali namenski fizični strežnik.
Vsebniki so se prav tako pojavili za nadaljnje zmanjšanje stroškov in reševanje številnih težav, s katerimi se soočajo razvijalci z virtualnimi stroji. Obe tehnologiji danes obstajata druga ob drugi, pri čemer ima vsaka svoje močne in šibke točke.

Kaj je virtualni stroj?
Navidezni stroji ali VM so oblika virtualiziranega računalniškega izvajalnega okolja, ki posnema fizični sistem. Virtualni stroj uporablja specializirano programsko opremo, imenovano a hipervizor pridobiti dostop do določenih virov na fizični infrastrukturi, ki mu omogoča delovanje kot neodvisen operacijski sistem.
Operacijski sistem navideznega stroja se imenuje gostujoči OS, medtem ko se operacijski sistem na fizičnem strežniku imenuje gostiteljski OS. Gostiteljski OS lahko gosti več primerkov gostujočega OS, odvisno od tega, koliko pomnilnika, jeder CPE in prostora za shranjevanje ima.
Prednosti in slabosti virtualnih strojev
Prednosti
- Izolacija: Virtualni stroj je zelo izolirano okolje, ki ga lahko uporabite za številne namene. Karkoli se zgodi v njem, ne bo vplivalo na druge virtualne stroje in obratno. Razlog je v tem, da vsak virtualni stroj deluje na eni ali več namenskih nitih CPU.
- Optimizacija strojne opreme: Virtualni stroji uporabnikom omogočajo poganjanje več operacijskih sistemov na enem strežniku strojne opreme. Ta sposobnost vodi do prihranka pri stroških.
- Posnetki in povrnitve: Stanje izvajanja virtualnega stroja lahko zajamete kadar koli. Ta postopek se imenuje posnetek, povrnitev nazaj pa je preprosto funkcija, ki virtualni stroj vrne v točno to stanje izvajanja.
- prilagodljivost: Navidezne računalnike lahko povečate ali zmanjšate in jih preprosto preselite, zaradi česar so idealna platforma za razvoj in testiranje aplikacij.
Proti
- Omejena razširljivost: Čeprav lahko navidezne stroje spreminjate, jih ni tako enostavno spreminjati kot vsebnike.
- kompleksnost: Virtualni stroji zahtevajo več stroškov za upravljanje, kot so posodobitve in spremljanje, kar lahko povzroči težave pri obsežnih uvedbah.
- licenciranje: Zagon več virtualnih strojev lahko povzroči stroške licenciranja.
Kaj je vsebnik?
Vsebnik je tudi virtualizacijska tehnologija, ki uporabniku omogoča ustvarjanje in vzdrževanje izoliranih izvajalskih okolij v fizičnem sistemu, ne da bi se zanašal na hipervizor sistema ali neposreden dostop do CPE in drugih virov.
Vsebnik se ustvari, ko se izvede vsebina podatkovne datoteke. Ta datoteka se imenuje slika vsebnika in vključuje vse knjižnice, ki jih je treba namestiti v operacijski sistem gostitelja, da se ustvari želeni vsebnik.
Vsebniki so lahki in zagotavljajo dosledno in prenosljivo okolje, ki je zelo uporabno za sodoben razvoj programske opreme. Prav tako se lahko izvajajo drug ob drugem na istem fizičnem gostitelju, kolikor to podpirajo specifikacije strojne opreme.
Prednosti in slabosti zabojnikov
Prednosti
- Konsistentno okolje: Vsebina posode je fiksna in točna. To pomeni, da bo vedno ustvaril isto izvajalsko okolje, ko se bo izvajalo.
- Učinkovitost z viri: Vsebniki uporabljajo samo toliko virov, kot jih potrebujejo. Ni vam treba predhodno določiti procesorjev ali dodeliti pomnilnika. To omogoča tudi pakiranje več zabojnikov skupaj.
- Hitro uvajanje: Zabojniki so lahki in se hitro postavijo, pogosto potrebujejo le nekaj sekund, da začnejo delovati.
- Izolacija: Vsebnik je izolirano izvajalno okolje. Čeprav ni tako izoliran kot virtualni stroji, je še vedno najboljša rešitev za izvajanje mikro storitev, ki se osredotočajo na opravljanje le enega dela in to dobro.
Proti
- Omejena podpora za starejše aplikacije: Če imate opravka z aplikacijo, ki potrebuje posebne funkcije operacijskega sistema ali strojne opreme, vsebnik morda ni vaša najboljša rešitev.
- Efemerni podatki: Vse o zabojnikih je uničeno, ko je zabojnik uničen, in to vključuje podatke. Obstajajo pa načini za obstojne podatke s vsebniki.
- Odvisnost od jedra: Vsebniški motorji delujejo na gostiteljskem operacijskem sistemu, kar omejuje, kaj lahko počnete v okolju.
Razlike med virtualnimi stroji in vsebniki
| Virtual Machines | Zabojniki | |
|---|---|---|
| Arhitektura | Vključuje operacijski sistem s knjižnicami | Vključuje samo potrebne knjižnice |
| Velikost slike | 10 - 150 GB | 5 - 600 MB |
| Izolacija in varnost | Relativno izolirano in varno | Zelo izolirano in varno |
| Čas uvajanja in zagona | V povprečju 1-3 minute | V povprečju 1-3 sekunde |
| Izkoriščenost virov | Povprečje | visoka |
| stroški | Višje | nizka |
| Orkestracija | Ok | Zelo učinkovito |
| Uporabite primere | Izolacija, podedovani sistemi, GUI | Mikro storitve, DevOps, skaliranje |
- Arhitektura: Virtualni stroji so zasnovani za izvajanje več operacijskih sistemov drug ob drugem. Vsak operacijski sistem je popolnoma izoliran in ima določeno količino virov. Vsebniki pa delujejo na istem operacijskem sistemu, vendar v različnih virtualnih okoljih. Vsak vsebnik vključuje samo knjižnice, ki jih potrebuje, in deli razpoložljive vire strojne opreme z drugimi.
- Velikost slike: Najmanjša slika vsebnika je 4.8 MB velika datoteka Docker, ki se ob stiskanju zmanjša na 2 MB. Večina vsebniških datotek ima v povprečju nekaj sto megabajtov, največja pa okoli 700 MB. Po drugi strani pa imajo virtualni stroji velikost od približno 10 GB do 150 GB.
- Izolacija in varnost: Virtualni stroji delujejo na svojih ekskluzivnih nitih CPE in dostopajo do omejenega območja fizičnega RAM-a. Zaradi tega so manj dovzetni za napade, tako od znotraj kot od zunaj. Vsebniki pa si delijo operacijski sistem, zaradi česar so bolj dovzetni za napade, ne glede na njihovo varnostno implementacijo.
- Čas uvajanja in zagona: Z večinoma megabajti podatkov za nalaganje in namestitev ter ni potrebe po zagonu sistema z diskov, vsebniki premagajo virtualne stroje, ko gre za hitrost. Tipičen vsebnik potrebuje le nekaj sekund za namestitev, medtem ko virtualni stroj potrebuje nekaj minut.
- Uporaba virov in stroški: Virtualni stroji imajo nižjo gostoto na fizični strežnik, ker vsak VM zahteva posebne CPE, RAM in vire za shranjevanje. Gostota vsebnikov v sistemu je odvisna od njihove kumulativne uporabe virov.
- Orkestracija: Oba sistema je mogoče orkestrirati s pravimi aplikacijami. Docker Swarm in Kubernetes sta priljubljena za vsebnike, medtem ko je VM mogoče orkestrirati tudi z rešitvami Kubernetes.
Katera rešitev je prava za vas?
Ko ste videli razlike med vsebniki in navideznimi stroji, se morate prav tako zavedati, da ima vsak sistem scenarije, kdaj najbolje deluje. Torej, spodaj je seznam, kdaj uporabiti vsebnike in kdaj uporabiti VM.
Kdaj uporabiti zabojnike
- Mikro storitve: Če uporabljate porazdeljeno aplikacijsko arhitekturo, kjer so njeni različni deli zasnovani tako, da delujejo neodvisno kot mikrostoritve, potem je vsebnik verjetno najboljši način.
- Nadzor okolja: Vsebniki so idealni tudi za situacije, ko potrebujete popoln nadzor nad okoljem, saj vsaka slika vsebnika vsebuje natančno in 100-odstotno ponovljivo okolje izvajanja.
- Hitro uvajanje: Vsebniki se lahko naložijo tako hitro kot le nekaj sekund, zaradi česar so idealna tehnologija za hitro uvajanje aplikacij na zahtevo. Ti vključujejo testiranje programske opreme, orkestracijo in skaliranje proizvodnih sistemov.
- Učinkovitost virov: Vsebniki lahko zaradi svoje zasnove bolje povečajo vire strojne opreme stroja, saj je vsak vsebnik prilagodljiv glede na porabo procesorja in pomnilnika.
- Vodoravno in navpično skaliranje: Vsebniki dobro delujejo tako za vodoravne kot navpične situacije skaliranja. Horizontalno skaliranje je preprost zagon več vsebnikov za obvladovanje višjih delovnih tokov, medtem ko je vertikalno skaliranje povečanje dodelitve procesorja in pomnilnika za določen vsebnik ali skupino vsebnikov.
Kdaj uporabljati virtualne stroje
- Močna izolacija aplikacij: Virtualni stroj je dobra rešitev, kadar koli morate izvesti kodo v okolju, ki je popolnoma izolirano od drugih procesov. Primer bi bil izvajanje programske opreme, ki je verjetno okužena z zlonamerno programsko opremo.
- GUI: Navidezni stroj je morda prava rešitev, ko morate zagnati aplikacijo, ki deluje prek grafičnega uporabniškega vmesnika.
- Navpično skaliranje: Aplikacije VM lahko enostavno prilagodite navpično tako, da povečate njihov CPU in dodelitev pomnilnika iz programske opreme za virtualizacijo.
- Dostop na ravni strojne opreme: Virtualni stroji so odlični tudi za aplikacije, ki zahtevajo veliko virov ali potrebujejo neposreden dostop do CPE ali posebnih konfiguracij strojne opreme.
- Podedovane aplikacije: Nekatere aplikacije so odvisne od določenih knjižnic ali virov operacijskega sistema. Zato se najbolje izvajajo v točno tistem okolju, ki ga potrebujejo.
Seznam navideznih strojev in orodij za shranjevanje
Obstaja veliko orodij in rešitev za ustvarjanje in upravljanje virtualnih strojev in vsebnikov. Torej, tukaj je kratek seznam najbolj priljubljenih.

- Oracle VirtualBox: Brezplačni in odprtokodni upravitelj virtualnih strojev
- Lučki delavec: Izdelava in upravljanje odprtokodnega vsebnika
- Kubernetes: Odprtokodni sistem za orkestracijo vsebnikov
- Kontejner: Čas izvajanja vsebnika za napredne uporabnike
- VMware Workstation: Zaženite virtualne stroje v sistemih Linux in Windows
- Microsoft Hyper-V: Zaženite virtualne stroje v sistemu Windows
- RedHat Openshift: Platforma za virtualizacijo in upravljanje v oblaku na ravni podjetja
- Nomad: Za upravljanje orkestracije
- Apache Mesos: Odprtokodni upravljalnik gruče
- Rančer: Za upravljanje več gruč Kubernetes
- Google Cloud: Googlov motor Kubernetes
- AWS: spletne storitve Amazon, vključno s storitvami brez strežnika Fargate vodja kontejnerjev
Pogosto zastavljena vprašanja
Tukaj je nekaj pogosto zastavljenih vprašanj o virtualnih strojih v oblaku in aplikacijah v vsebnikih.
Kaj je bolj varno, virtualni stroj ali vsebnik?
Virtualni stroj je tehnično varnejši od vsebnika.
Kakšna je razlika v velikosti med virtualnimi stroji in vsebniki?
Virtualni stroji so običajno veliki gigabajti, medtem ko so vsebniki običajno veliki megabajti.
Ali je mogoče virtualne stroje in vsebnike uporabljati skupaj?
Da, vsebniški motor lahko zaženete znotraj virtualnega stroja.
Kaj je bolj razširljivo, virtualni stroj ali vsebnik?
Vsebnike je lažje in hitreje prilagajati kot virtualne stroje.
Ali je mogoče vsebnike seliti med gostitelji?
Da, vsebnik je mogoče preseliti med gostitelji s pravo platformo za orkestracijo.
Koliko virtualnih strojev lahko izvajam na enem gostitelju?
Odvisno je predvsem od količine razpoložljivih jeder procesorja in RAM-a. Do neke mere je odvisno tudi od vrste delovne obremenitve in učinkovitosti hipervizorja.
zaključek
Prišli smo do konca te primerjave virtualnih strojev in vsebnikov v oblaku. In kot ste videli, sta obe tehnologiji dragoceni za uvajanje in upravljanje aplikacij v oblaku.
Vaša izbira med obema bo vedno odvisna od vaših potreb. Kadarkoli bi se lahko bolje odrezali z virtualnim strojem, pristopom kontejnerizacije ali obojim.




