Er du akkurat i gang med visualiseringsverktøy? Eller hacke deg gjennom teknologisamtalen på containere og virtuelle maskiner.
Virtualisering innebærer prosessen der enkeltstående ressurser som RAM, CPU, nettverk og disker kan «virtualiseres» og betraktes som flere ressurser. Hovedforskjellen er at containere bare kan virtualisere programvarelag bygget over operativsystemnivået. Derimot kan virtuelle maskiner virtualisere hele maskiner til maskinvarelagene.
Selv om det er et klart skille, er det en liste over likheter mellom containere og virtuelle maskiner, inkludert hvordan de forbedrer IT-effektiviteten, tilgjengeliggjør portabilitet til applikasjoner, forbedrer DevOps og programvareutviklingslivssyklusen (SDLC). Mer om dette senere.
Dette innlegget bryter ned containere og virtuelle maskiner, dykker ned i fordelene med begge, og avslutter med et notat om å velge riktig verktøy basert på dine behov. Det forutsetter også at du har forutsetningskunnskap om containere og virtuelle maskiner. Hvis du ikke har det, er det fortsatt et utmerket sted å starte.
Innholdsfortegnelse
Virtualiseringens historie
Før spredningen av containere var virtuelle maskiner den eneste løsningen for å isolere miljøer innenfor en fysisk infrastruktur. Men det var ikke før i 2013 at Docker ga ut sin første containeriseringsprogramvare.
Og siden den gang har du kanskje lagt merke til den omfattende interessen for containere og hvordan de former cloud computing-landskapet.
Mange utviklere har fått mer interesse, spesielt for fordelene med den smidige utviklingen som tilbys av containere. Du bør imidlertid merke deg at containere og virtuelle maskiner er bygget på å optimalisere ressurser i eksisterende fysisk infrastruktur.
Hvordan virtualisering fungerer
Virtualisering innebærer å bruke programvare for å lage et abstraksjonslag over maskinvare, slik at maskinvareelementene, si spesielt fra én datamaskin, kan deles inn i flere datamaskiner. Slik programvare kalles en hypervisor.
Hypervisor lar ulike operativsystemer kjøre samtidig, og deler vanlige fysiske dataressurser. Når den brukes på fysiske datamaskiner eller servere i datasentre, vil den gjøre det mulig for fysiske datamaskiner å skille datamaskinoperativsystemer (OS) og applikasjoner fra maskinvaren. Etterpå kan den dele seg opp i flere «virtuelle maskiner.»
Hva er en container?
Kilde: docker.com
Beholdere er en lett, smidig metode for å håndtere virtualisering. Og siden de ikke trenger hypervisorer, gir de deg rett til raskere ressurstilførsel og rask tilgjengelighet for nye applikasjoner.
Du kan også se beholdere som programvarepakker som inneholder avhengigheter som kreves for å kjøre den administrerte applikasjonen.
Avhengighetene inkluderer systembiblioteker, eksterne (tredjeparts) kodepakker og inkludering av alle andre applikasjoner på operativsystemnivå. Alle avhengigheter inkludert i en beholder eksisterer i stabelnivåer høyere enn operativsystemene.
Fordeler 👍
Ulemper 👎
Populære containerleverandører
Her er noen kjente containerleverandører:
Hva er en virtuell maskin?
Kilde: docker.com
Virtuelle maskiner (VM-er), på den annen side, er store (tunge) programvarepakker som gir fullstendig emulering av maskinvareutstyr på lavt nivå som den sentrale prosessorenheten (CPU), disk og nettverksenheter.
VM-er lar deg kjøre flere maskiner på forskjellige operativsystemer, men fortsatt på en enkelt datamaskin. Som nevnt tidligere er hypervisorer hvordan virtuelle datamaskiner samhandler med fysiske datamaskiner. Hypervisorer skiller VM-er fra hverandre og tildeler ressurser som minne og prosessorer mellom dem.
Fordeler 👍
Ulemper 👎
Populære leverandører av virtuelle maskiner
Her er noen populære leverandører av virtuelle maskiner:
Beholdere vs. virtuelle maskiner
Mens virtuelle maskiner har eksistert like lenge, blir de erstattet av containere for lignende formål. Du har sett fordelene og ulempene med begge teknologistablene. Her er de primære forskjellene.
FeatureContainers Virtual Machines Store og mindre bærbare basert på at hver VM har sitt operativsystem. Virtuelle maskiner tar opp stor plass, målt i gigabyte.
VM-er er ikke bærbare. Har ikke eget operativsystem. Har egne operativsystemer og utfører dermed ekstra oppgaver, inkludert; kjører programmer som er inkompatible med verts-OS, flere programmer på forskjellige operativsystemer, og kjører programmer som ikke kan dele operativsystemressurser og funksjonalitet.Størrelse og portabilitetSmå og bærbare på grunn av delingsoperativsystemet. Beholdere tar opp plass målt i megabyte.
Beholdere kan flyttes på tvers av forskjellige datamaskiner. Beholdere kjører raskere enn virtuelle maskiner på grunn av deres allerede kjørende operativsystem. Det tar sekunder å kjøre. OppstartshastighetVM-er er trege ettersom de må starte opp sine egne operativsystemer først. Det tar flere minutter å starte opp. Prisen på VM-er er relativt høyere – det høye behovet for ressurser og kompleksitetsnivåer og høye kostnader.Tilgang til ressurserBeholdere har tilgang til alle ressursene i vertsmaskinen.Virtuelle maskiner bruker de spesifikke ressursene som er tildelt dem av hypervisor.Sikkerhet Mindre sikker. Beholdere som kjører på en delt vertsoperativprogramvare er sårbare når vertsoperativsystemet er kompromittert.Kompleks distribusjon; kompleksitetsnivået til VM-er indikerer at de trenger mer tid til utvikling. Implementering er ikke annerledes.DeploymentEnkel utrulling; dette er på grunn av sin natur, «selvstendig», og har en liten enkelhet å distribuere, flytte eller oppgradere. Prisen på VM-er er relativt høyere. Det høye behovet for ressurser og kompleksitetsnivåer, sammen med det, er en høy kostnad. Kostnad Prisen på containere er relativt lavere fordi det er færre krav enn i VM-ene. Prisen på VM-er er relativt høyere – det høye behovet for ressurser og kompleksitet nivåer, sammen med det en høy kostnad.
Hvordan bruke containere og virtuelle maskiner samtidig
Hvis du har lurt på om det er mulig å bruke containere og virtuelle maskiner sammen, er svaret ja. Selv om de praktiske tilfellene er begrenset. Du kan opprette en VM for å emulere spesifikke maskinvarekonfigurasjoner og installere et operativsystem.
Når VM-en starter opp operativsystemet og er fullt funksjonell, er du nå utstyrt med et emulert beregningssystem med spesifikk maskinvare som du kan installere containere på.
Et godt eksempel for å illustrere denne konfigurasjonen er å eksperimentere med et system for chip-distribusjoner. Noen populære metoder for on-chip beregningsenheter som BeagleBone utviklingskort og Raspberry Pi kan emuleres som virtuelle maskiner for å eksperimentere med operative (kjørende) beholdere før testing på faktisk maskinvare.
En annen fordel med å bruke foreningen av containere og virtuelle maskiner er å øke sikkerheten. Du kan for eksempel distribuere containere i virtuelle maskiner. Tenk på et eksempel der ti containere er distribuert på én datamaskin for å demonstrere hvordan dette er nyttig.
Hvis datamaskinen blir kompromittert, risikerer du å påvirke de ti beholderne. Løsningen oppnås ved å fordele de ti containerne på ti virtuelle maskiner. Hvis en virtuell maskin blir kompromittert, fungerer vanligvis de andre delene av systemapplikasjonen.
Siste ord
Hvis du har presise maskinvarespesifikasjoner for prosjektet ditt eller utvikler på én maskinvare og fortsatt målretter mot en annen, som Windows vs. MacOS, ville det være best å bruke virtuelle maskiner. I andre tilfeller der kravene er «bare programvare», ville det beste alternativet være å bruke containere.
I de fleste tilfeller vil dine behov bli tilfredsstilt av et av valgene dine. For å velge den beste, forstå ressursbehovene dine og de tilhørende avveiningene. Riktig verktøy vil derfor avhenge av ditt prosjekt.
Hvis du trenger rask og effektiv distribusjon, er containere det beste valget. Hvis organisasjonen din trenger å virtualisere et komplett operativsystem på maskinvare, er VM-er de beste. Og hvis du ønsker å maksimere sikkerheten, vil en kombinasjon av begge være best; det har imidlertid en tilhørende kostnad.
Til slutt er både containere og virtuelle maskiner gyldige løsninger. Dine spesifikasjoner bør imidlertid være den avgjørende veiledende faktoren. Hvis du fortsatt trenger mer veiledning og dyp forståelse, foreslår jeg at du går til Docker vs. virtuell maskin.