Virtuele machines en containers zijn typen virtualisatie waarmee applicaties kunnen worden geïmplementeerd in omgevingen die zijn geïsoleerd van de onderliggende hardware.
Deze technologieën worden vaak gebruikt in grote IT-projecten om kosten te besparen en het implementeren van programma's op verschillende platforms gemakkelijker te maken. Een virtuele machine is ook handig om nieuwe besturingssystemen uit te proberen.
Een probleem met deze concepten is dat ze sterk op elkaar lijken, waardoor het moeilijk is om ertussen te kiezen.
Dus wat is precies het verschil tussen een virtuele machine en een container?
Wat is een virtuele machine?
Een virtuele machine is een virtualisatie van een computer. Met virtuele machines kunt u een enkele computer gebruiken om wat op meerdere computers lijkt te draaien, elk met een eigen besturingssysteem.
Virtuele machines worden gemaakt met behulp van hypervisors. Dit is een stukje software dat tussen een VM en de onderliggende hardware zit. De hypervisor haalt resources uit de onderliggende hardware en verdeelt deze in toegewezen aan individuele VM's.
Het resultaat zijn meerdere omgevingen die dezelfde hardware gebruiken, maar zich gedragen alsof ze volledig van elkaar geïsoleerd zijn.
Wat is een container?
Een container is vergelijkbaar met een virtuele machine. Maar in plaats van een hele computer te virtualiseren, virtualiseert een container alleen software boven het niveau van het besturingssysteem.
Containers zijn lichter omdat ze geen eigen besturingssysteem nodig hebben. Om dit in perspectief te plaatsen, worden ze meestal gemeten in megabytes in plaats van de gigabytes die aan virtuele machines zijn gekoppeld.
Ze hebben ook geen hypervisor nodig en kunnen direct bovenop het hostbesturingssysteem worden geplaatst. Elke container deelt vervolgens de host OS-kernel.
Hoewel ze kleiner zijn dan virtuele machines, zijn containers nog steeds ontworpen om alle benodigde bestanden op te nemen om een applicatie te laten draaien. Ze omvatten alle afhankelijkheden en runtime-bibliotheken. Hierdoor kan een applicatie in een container overal worden uitgevoerd.
Wat is het verschil tussen een virtuele machine en een container?
Virtuele machines bestaan al het langst, maar zijn voor sommige doeleinden vervangen door containers. Elke technologie heeft echter zijn eigen voor- en nadelen. Het juiste gereedschap voor de klus hangt dus af van het specifieke project. Dit zijn de belangrijkste verschillen.
1. Virtuele machines bieden een apart besturingssysteem
Omdat ze hun eigen besturingssysteem hebben, kunnen virtuele machines een aantal taken uitvoeren die niet mogelijk zijn met containers.
- U kunt programma's uitvoeren die niet compatibel zijn met het host-besturingssysteem.
- U kunt meerdere toepassingen in verschillende besturingssystemen uitvoeren.
- U kunt meerdere toepassingen uitvoeren die het zich niet kunnen veroorloven om de functionaliteit en bronnen van het besturingssysteem te delen.
2. Containers zijn kleiner en draagbaarder
Het delen van een besturingssysteem vermindert aanzienlijk de hoeveelheid code die nodig is om een container te laten draaien. Containers zijn daarom aanzienlijk kleiner dan VM's en nemen vaak slechts een paar megabytes in beslag.
Dit maakt containers in potentie veel goedkoper omdat je er meer op één server kunt plaatsen. Het maakt containers ook aanzienlijk draagbaarder.
Containers kunnen eenvoudig worden overgedragen tussen computers, computeromgevingen en de cloud. Dit maakt ze met name handig voor teams die willen samenwerken aan één applicatie terwijl ze verschillende omgevingen gebruiken.
3. Containers starten sneller op
Containers kunnen veel sneller worden gestart omdat het besturingssysteem al draait, in tegenstelling tot het starten van een virtuele machine, waarbij een nieuw besturingssysteem moet worden opgestart.
Zo kunnen containers binnen enkele seconden opstarten, terwijl virtuele machines doorgaans enkele minuten nodig hebben.
Omdat containers minder resources gebruiken, kunnen sommige applicaties ook sneller worden uitgevoerd.
4. Containers hebben toegang tot alle bronnen
Virtuele machines hebben specifieke bronnen die door de hypervisor aan hen zijn toegewezen. Dit kan handig zijn voor resource-intensieve toepassingen, maar het kan ook inefficiënt zijn wanneer toegewezen resources ongebruikt blijven.
Containers hebben toegang tot alle onderliggende hardwarebronnen en vormen dit probleem dus niet. Als gevolg hiervan zijn containers meestal de betere keuze voor toepassingen waarbij de benodigde resources onbekend zijn.
5. Virtuele machines zijn veiliger
Een virtuele machine is volledig geïsoleerd van al het andere op een computer. Een container wordt alleen op procesniveau geïsoleerd. Dit maakt virtuele machines veiliger.
Als het hostbesturingssysteem is gecompromitteerd, kunnen alle containers die erboven zijn geïnstalleerd ook worden gecompromitteerd. In hetzelfde scenario zouden virtuele machines niet worden beïnvloed.
Een exploit die binnen een virtuele machine wordt uitgevoerd, kan niets daarbuiten beïnvloeden. Een exploit die in een container wordt uitgevoerd, kan mogelijk toegang krijgen tot de rest van een systeem.
Moet u een virtuele machine of een container gebruiken?
Virtuele machines en containers lijken erg op elkaar, maar zijn niet uitwisselbaar. Bijgevolg zullen sommige projecten een keuze tussen de twee bieden, terwijl andere dat niet zullen doen.
U moet een virtuele machine gebruiken wanneer u toepassingen wilt uitvoeren die specifiek een nieuw besturingssysteem vereisen. Het host-besturingssysteem ondersteunt de toepassing bijvoorbeeld mogelijk niet.
Een virtuele machine moet ook worden gebruikt wanneer isolatie en beveiliging boven alles prioriteit hebben.
In de meeste andere scenario's biedt een container een lichtere, snellere en kosteneffectievere oplossing.
Kun je virtuele machines en containers samen gebruiken?
Als u de functionaliteit van zowel virtuele machines als containers wilt, is het mogelijk om beide te combineren. In dit geval start u een virtuele machine en implementeert u er containers in.
Dit is vooral handig voor beveiligingsdoeleinden. Stel je bijvoorbeeld voor dat je tien containers op één computer draait. Als het besturingssysteem van die computer wordt gecompromitteerd, kunnen alle tien containers worden beïnvloed.
Stel je nu voor dat je die tien containers verdeelt over meerdere virtuele machines. Als een van die VM's wordt gecompromitteerd, worden alleen de containers erin beïnvloed en werkt de rest normaal.
Vervangen containers virtuele machines?
Containers worden steeds populairder en terecht. Ze bereiken veel van dezelfde doelen als virtuele machines, maar doen dit tegen een fractie van de omvang en potentiële kosten.
Ondanks dit feit zijn er veel situaties waarin alleen een virtuele machine de gewenste functionaliteit biedt, wat betekent dat VM's, ongeacht hun grootte, altijd tot op zekere hoogte zullen worden gebruikt.
Wilt u Linux installeren, maar kunt u Windows niet verlaten? Probeer een virtuele machine om uw favoriete versie van Linux in Windows uit te voeren. We laten u zien hoe u VMware Workstation Player instelt.
Lees volgende
- Technologie uitgelegd
- VirtualBox
- Virtuele machine
- virtualisatie
- Web Server
Elliot is een freelance technisch schrijver. Hij schrijft vooral over fintech en cybersecurity.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren