Virtuelle maskiner vs containere: En omfattende sammenligning
Forvirret over virtuelle skymaskiner og containeriseringsteknologier? Læs videre for at finde ud af, hvad der adskiller dem, hvor deres styrker ligger, og hvordan du gør den mest effektive brug af hver tilgang.

Virtuelle maskiner og containerisering er to tilgange til at implementere flere eksekveringsmiljøer på en enkelt platform.
Disse to teknologier gør det nemt at skabe et virtuelt miljø, der er modelleret efter fysisk infrastruktur, hvilket yderligere gør brugeren i stand til at optimere ressourcer.
Denne artikel udforsker deres ligheder og forskelle. Den ser også på deres fordele og ulemper i forskellige anvendelsestilfælde, for at give dig en bedre idé om, hvordan og hvornår du bedst udnytter hver enkelt.
Hypervisorer og containermotorer
Mange websteder og internetapplikationer startede livet i et delt hostingmiljø – hvor to eller flere applikationer delte alle ressourcerne på en fysisk server. Dette kom med problemer, da et kompromitteret program kunne påvirke resten, både på sikkerhed og ydeevne. Den nemmeste løsning dengang var at køre en dedikeret server, hvilket desværre kom med øgede omkostninger.
Virtualisering kom til at løse disse problemer. For det første gjorde hypervisorer det muligt for en fysisk server at være vært for mere end én virtuel server – afhængigt af hvor mange CPU'er og RAM den har. Dette gør det muligt for forskellige applikationer, websteder eller klienter at køre i deres isolerede miljøer til en lavere pris uden behov for en dedikeret fysisk server.
Containere dukkede ligeledes op for yderligere at reducere omkostningerne og løse de mange problemer, som udviklere stod over for med virtuelle maskiner. Begge teknologier eksisterer ved siden af hinanden i dag, med hver deres stærke og svage punkter.

Hvad er en virtuel maskine?
Virtuelle maskiner eller VM'er er en form for virtualiseret computerudførelsesmiljø, der efterligner et fysisk system. En virtuel maskine bruger specialiseret software kaldet a hypervisor at få adgang til specifikke ressourcer på en fysisk infrastruktur, der gør det muligt at fungere som et selvstændigt styresystem.
En virtuel maskines operativsystem kaldes gæste-OS, mens operativsystemet på den fysiske server kaldes værts-OS. Et værts-OS kan være vært for flere gæste-OS-forekomster, afhængigt af hvor meget hukommelse, CPU-kerner og lagerplads det har.
Fordele og ulemper ved virtuelle maskiner
FORDELE
- Isolering: En virtuel maskine er et meget isoleret miljø, som du kan bruge til mange formål. Alt, hvad der sker indeni det, vil ikke påvirke andre virtuelle maskiner og omvendt. Årsagen er, at hver virtuel maskine kører på en eller flere dedikerede CPU-tråde.
- Hardware optimering: Virtuelle maskiner giver brugerne mulighed for at køre mange operativsystemer på en enkelt hardwareserver. Denne evne fører til omkostningsbesparelser.
- Snapshots og tilbagerulninger: Du kan til enhver tid registrere udførelsestilstanden for en virtuel maskine. Denne proces kaldes et snapshot, og en rollback er simpelthen en funktion, der bringer den virtuelle maskine tilbage til den nøjagtige udførelsestilstand.
- Fleksibilitet: Du kan skalere VM'er op eller ned og nemt migrere dem, hvilket gør dem til en ideel platform til udvikling og test af applikationer.
ULEMPER
- Begrænset skalerbarhed: Selvom du kan skalere virtuelle maskiner, er de ikke så nemme at skalere som containere.
- Kompleksitet: Virtuelle maskiner kræver mere overhead at administrere, såsom opdateringer og overvågning, og dette kan føre til problemer i storskala implementeringer.
- Licenser: Kørsel af flere virtuelle maskiner kan medføre licensomkostninger.
Hvad er en container?
En container er også en virtualiseringsteknologi, der giver en bruger mulighed for at skabe og vedligeholde isolerede eksekveringsmiljøer på et fysisk system uden at være afhængig af systemets hypervisor eller direkte adgang til CPU og andre ressourcer.
En container oprettes, når indholdet af en datafil udføres. Denne fil kaldes containerbilledet og inkluderer alle de biblioteker, der skal installeres på værtsoperativsystemet for at skabe den ønskede container.
Containere er lette og giver et konsistent og bærbart miljø, der er yderst nyttigt til moderne softwareudvikling. De kan også udføres side om side på den samme fysiske vært, så meget som hardwarespecifikationerne kan understøtte.
Fordele og ulemper ved containere
FORDELE
- Konsekvent miljø: Indholdet i en beholder er fast og nøjagtigt. Det betyder, at det altid vil producere det samme eksekveringsmiljø, når det køres.
- Effektivitet med ressourcer: Containere bruger kun så mange ressourcer, som de har brug for. Du behøver ikke at indstille CPU'er eller allokere hukommelse på forhånd. Dette giver også mulighed for, at flere beholdere kan pakkes sammen.
- Hurtig implementering: Containere er lette og hurtige at implementere, og de behøver ofte kun et par sekunder for at begynde at arbejde.
- Isolering: En container er et isoleret eksekveringsmiljø. Selvom det ikke er så isoleret som virtuelle maskiner, er det stadig den bedste løsning til at køre mikrotjenester, der fokuserer på kun at udføre ét job og gøre det godt.
ULEMPER
- Begrænset understøttelse af ældre applikationer: Hvis du har at gøre med et program, der har brug for specifikke funktioner fra operativsystemet eller hardwareenheder, så er en container muligvis ikke din bedste løsning.
- Flygtige data: Alt om containere bliver ødelagt, når containeren bliver ødelagt, og dette inkluderer data. Der er dog måder at have vedvarende data med containere på.
- Kernelafhængighed: Containermotorer kører på et værtsoperativsystem, hvilket begrænser, hvad du kan gøre i miljøet.
Virtuelle maskiner og containere forskelle
| Virtuelle maskiner | Beholdere | |
|---|---|---|
| arkitektur | Inkluderer operativsystem med biblioteker | Inkluderer kun nødvendige biblioteker |
| Billedstørrelse | 10 - 150 GB | 5 - 600 MB |
| Isolation og sikkerhed | Relativt isoleret og sikker | Meget isoleret og sikker |
| Implementering og opstartstid | 1-3 minutter i gennemsnit | 1-3 sekunder i gennemsnit |
| Ressourceudnyttelse | Gennemsnit | Høj |
| Omkostninger | Højere | Lav |
| Orchestration | Okay | Højeffektive |
| Brug cases | Isolering, ældre systemer, GUI | Mikrotjenester, DevOps, skalering |
- arkitektur: Virtuelle maskiner er designet til at køre flere operativsystemer side om side. Hvert OS er fuldstændigt isoleret og tildelt en fast mængde ressourcer. Containere, på den anden side, kører på det samme operativsystem, men i forskellige virtuelle miljøer. Hver container indeholder kun biblioteker, den har brug for, og deler tilgængelige hardwareressourcer med andre.
- Billedstørrelse: Det mindste containerbillede er en 4.8 MB Docker-fil, der kommer ned til 2 MB, når den er komprimeret. De fleste containerfiler er i gennemsnit et par hundrede megabyte, med de største omkring 700 MB. Virtuelle maskiner starter på den anden side fra omkring 10 GB og kan nå op på 150 GB i størrelse.
- Isolation og sikkerhed: Virtuelle maskiner kører på deres eksklusive CPU-tråd(er) og får adgang til et begrænset område af den fysiske RAM. Dette gør dem mindre modtagelige for angreb, både indefra og udefra. Containere deler på den anden side et operativsystem, og det gør dem mere modtagelige for angreb, uanset deres sikkerhedsimplementeringer.
- Implementering og opstartstid: Med for det meste megabyte data at indlæse og installere, og ingen grund til at starte et system op fra diske, slår containere virtuelle maskiner hånd ned, når det kommer til hastighed. Den typiske container behøver kun et par sekunder at implementere, mens en virtuel maskine har brug for minutter.
- Ressourceudnyttelse og omkostninger: Virtuelle maskiner har en lavere tæthed pr. fysisk server, fordi hver VM kræver specifikke CPU-, RAM- og lagerressourcer. Tætheden af containere på et system afhænger af deres kumulative ressourceudnyttelse.
- Orchestration: Begge systemer kan orkestreres ved hjælp af de rigtige applikationer. Docker Swarm og Kubernetes er populære til containere, mens VM'er også kan orkestreres ved hjælp af Kubernetes-løsninger.
Hvilken løsning er den rigtige for dig?
Efter at have set forskellene mellem containere og virtuelle maskiner, bør du ligeså erkende, at hvert system har scenarier, når det fungerer bedst. Så det følgende er en liste over, hvornår man skal bruge containere, og hvornår man skal bruge VM'er.
Hvornår skal man bruge containere
- Mikrotjenester: Hvis du bruger en distribueret applikationsarkitektur, hvor dens forskellige dele er designet til at køre uafhængigt som mikrotjenester, så er en container sandsynligvis den bedste vej at gå.
- Kontrol af miljøet: Containere er også ideelle til situationer, hvor du har brug for absolut kontrol over miljøet, da hvert containerbillede har et nøjagtigt og 100 % replikerbart eksekveringsmiljø.
- Hurtig implementering: Containere kan indlæses på så hurtigt som et par sekunder, hvilket gør dem til den ideelle teknologi til hurtig implementering af applikationer efter behov. Disse omfatter softwaretest, orkestrering og skalering af produktionssystemer.
- Ressourceeffektivitet: Containere kan bedre maksimere en maskines hardwareressourcer på grund af deres design, da hver container er fleksibel med sin CPU og hukommelsesbrug.
- Horisontal og lodret skalering: Containere fungerer godt til både horisontale og vertikale skaleringssituationer. Horisontal skalering er den simple lancering af flere containere for at håndtere højere arbejdsgange, mens vertikal skalering er stigningen i CPU- og hukommelsesallokeringerne for den bestemte container eller containergruppe.
Hvornår skal man bruge virtuelle maskiner
- Stærk applikationsisolering: En virtuel maskine er en god løsning, når du skal udføre kode i et miljø, der er fuldstændig isoleret fra andre processer. Et eksempel kunne være at køre software, der sandsynligvis er inficeret med malware.
- GUI: En virtuel maskine kan være den rigtige løsning, når du skal køre en applikation, der interagerer gennem en grafisk brugergrænseflade.
- Lodret skalering: Du kan nemt skalere VM-applikationer lodret ved at øge deres CPU- og hukommelsesallokering fra virtualiseringssoftwaren.
- Adgang på hardwareniveau: Virtuelle maskiner er også gode til applikationer, der er ressourcekrævende, eller som har brug for direkte adgang til CPU'en eller specifikke hardwarekonfigurationer.
- Ældre applikationer: Nogle programmer er afhængige af specifikke biblioteker eller operativsystemressourcer. Så de udføres bedst i det nøjagtige miljø, de har brug for.
Liste over virtuelle maskiner og containeriseringsværktøjer
Der er masser af værktøjer og løsninger derude til at skabe og administrere virtuelle maskiner og containere. Så her er en hurtig liste over de mest populære.

- Oracle VirtualBox: Gratis og open source virtuel maskine manager
- Docker: Oprettelse og administration af open source-beholdere
- Kubernetes: Open-source container orkestreringssystem
- Containerd: Container runtime for avancerede brugere
- VMware Workstation: Kør virtuelle maskiner på Linux og Windows
- Microsoft Hyper-V: Kør virtuelle maskiner på Windows
- RedHat Openshift: Enterprise-grade virtualisering og cloud management platform
- Nomad: Til orkestreringsledelse
- Apache Mesos: Open source-klyngemanager
- Rancher: Til administration af flere Kubernetes-klynger
- Google Cloud: Googles Kubernetes-motor
- AWS: Amazon webtjenester, inklusive de serverløse Fargate containeransvarlig
Ofte stillede spørgsmål
Her er nogle ofte stillede spørgsmål vedrørende virtuelle cloud-maskiner og containeriserede applikationer.
Hvad er mere sikkert, en virtuel maskine eller en container?
En virtuel maskine er teknisk set mere sikker end en container.
Hvad er størrelsesforskellen mellem virtuelle maskiner og containere?
Virtuelle maskiner er typisk gigabyte store, mens containere typisk er megabyte store.
Kan virtuelle maskiner og containere bruges sammen?
Ja, du kan køre en containermotor inde i en virtuel maskine.
Hvad er mere skalerbart, en virtuel maskine eller en container?
Containere er nemmere og hurtigere at skalere end virtuelle maskiner.
Kan containere migreres mellem værter?
Ja, en container kan migreres på tværs af værter med den rigtige orkestreringsplatform.
Hvor mange virtuelle maskiner kan jeg køre på en enkelt vært?
Det afhænger hovedsageligt af mængden af tilgængelige CPU-kerner og RAM. Og til en vis grad afhænger det også af typen af arbejdsbyrde og hypervisorens effektivitet.
Konklusion
Vi er nået til slutningen af denne sammenligning af virtuelle cloudmaskiner og containere. Og som du har set, er begge teknologier værdifulde til at implementere og administrere applikationer i skyen.
Dit valg mellem de to vil dog altid afhænge af dine behov. Du kan til enhver tid gøre det bedre med en virtuel maskine, en containeriseringstilgang eller begge dele.




