Container versus virtual machine
Virtualisatie heeft de manier waarop IT werkt fundamenteel veranderd. Virtualisatie heeft de traditionele (dure, inefficiënte) één-op-één verhouding tussen hardware en besturingssystemen doorbroken door meerdere gesimuleerde computeromgevingen op één fysieke machine te laten bestaan.

In eerste instantie bracht virtualisatie een revolutie in IT teweeg door virtual machines (VM's). Elke VM gedraagt zich als een volledig onafhankelijke computer, die zijn besturingssysteem en applicatiecode kan draaien. Hierdoor kunnen IT-afdelingen veel onderbezette fysieke servers op een kleiner aantal krachtigere machines bijeenbrengen. Dit voorkomt een wildgroei aan hardware en de energiekosten worden aanzienlijk verminderd.
Met containers heeft het virtualisatieconcept een stap vooruit gedaan. Containers bieden een lichtgewicht vorm van virtualisatie: ze delen het besturingssysteem van de hostmachine, maar schermen de specifieke applicaties en hun afhankelijkheden af.
Hierdoor kunnen containers ongelooflijk snel opstarten en zijn ze gemakkelijk te verplaatsen. Hierdoor zijn ze ideaal voor gebruik in de cloud. Alles overziend kunnen IT-teams dankzij virtualisatie het gebruik van resources optimaliseren, ontwikkeling stroomlijnen, flexibiliteit voor noodherstel vergroten en uiteindelijk de kosten terugdringen, terwijl de reactiviteit toeneemt.
Virtualisatie begrijpen
Virtualisatie heeft een revolutie in IT-efficiëntie teweeggebracht door een softwarelaag te introduceren tussen de hardware en de besturingssystemen die erop draaien. Deze laag staat bekend als de hypervisor en is de sleutel tot het maken van virtuele machines of een container.
De hypervisor is een resourcemanager die delen van de CPU, het geheugen, de opslag en het netwerk van de hardware toewijst aan elke virtuele omgeving. Hij onderschept ook instructies van de besturingssystemen die in VM's worden uitgevoerd en vertaalt deze naar opdrachten die de fysieke hardware kan begrijpen.
Moderne processors hebben vaak al virtualisatiefuncties die door de hardware ondersteund worden (zoals Intel VT-x of AMD-V). Door deze functies kan de hypervisor specifieke taken direct aan de hardware overdragen. Dit resulteert in significant betere VM-prestaties. Hoewel in hardware ondersteunde virtualisatie voordelen oplevert, is het niet strikt noodzakelijk; virtualisatie op basis van software kan nog steeds effectief en efficiënt werken.
Uiteindelijk creëert virtualisatie een abstractielaag die software onafhankelijk maakt van de onderliggende hardware. Dit vormt de basis van de transformatieve impact op de reactiviteit en efficiëntie van IT.
Wat is een virtual machine?
Een virtual machine (VM) maakt virtualisatie mogelijk. Het is een software-emulatie van een fysiek computersysteem, compleet met zijn virtuele CPU, geheugen, opslag en netwerkinterfaces. Beschouw het als een gesimuleerde computer die binnen een andere computer draait.
Virtuele machines kunnen worden gemaakt en beheerd met behulp van een hypervisor. Die werkt als een dirigent, die resources toewijst en voor een soepele werking van meerdere machines op één fysieke machine zorgt. VM's vormen een veelzijdig hulpmiddel voor uiteenlopende computeromgevingen:
- Personal computers (pc's): Particulieren kunnen een virtuele machine op een pc gebruiken om software uit te voeren die voor een ander besturingssysteem is ontworpen. U kunt bijvoorbeeld een VM met Windows op uw Mac maken om programma's uit te voeren die alleen voor Windows bestaan.
- On-premises servers: Bedrijven kunnen VM's benutten om meerdere fysieke servers op een kleiner aantal krachtigere machines te consolideren. Dit reduceert hardwarekosten en vereenvoudigt serverbeheer. IT-afdelingen kunnen VM's maken voor specifieke taken, zoals webservers, databases of ontwikkelomgevingen.
- Cloudcomputing: Cloudproviders bieden virtual machines-as-a-service (IaaS). Dit levert ongelooflijke schaalbaarheid en flexibiliteit op. Bedrijven kunnen machines eenvoudig op aanvraag inplannen met de gewenste resources. Hierdoor hoeft er niet meer vooraf in hardware te worden geïnvesteerd. Ze kunnen hun VM's ook opschalen of inkrimpen op basis van veranderende workloads.
In essentie bieden VM's afgeschermde computeromgevingen die zich als onafhankelijke computers gedragen.
Door deze afscherming kunnen ze verschillende besturingssystemen en applicaties draaien op dezelfde fysieke machine, ongeacht de locatie (uw pc, een bedrijfsserver of de cloud). Deze flexibiliteit en efficiëntie maken virtualisatie tot een basistechnologie in het hedendaagse IT-landschap.
Wat is een container?
Terwijl virtuele machines uitblinken in het emuleren van volledige computers, bieden containers een lichter en sneller alternatief. In tegenstelling tot volledig gevirtualiseerde machines simuleren containers hun hardware niet. In plaats daarvan delen ze de kernel van het besturingssysteem van de hostmachine, maar schermen ze de specifieke toepassing, de bibliotheken en afhankelijkheden af die nodig zijn om de applicatie uit te voeren. Containers worden meestal georkestreerd door iets als Kubernetes of Docker.
Hierdoor kan een container veel sneller opstarten en gebruiken applicaties minder resources dan VM's. Het is ideaal om containers voor allerlei applicaties te gebruiken, waaronder:
Architectuur met microservices:
Moderne apps worden vaak gebouwd als verzamelingen van kleine, onafhankelijke services. Containers verpakken deze microservices perfect. Hierdoor kan men onafhankelijk ontwikkelen, implementeren en opschalen.
Cloud-native development:
Containers schitteren ook in cloudomgevingen. Door hun overdraagbaarheid en snelle opstarttijden zijn ze ideaal voor het implementeren en beheren van applicaties op verschillende cloudplatforms.
Continue integratie en levering (CI/CD):
Containers stroomlijnen CI/CD-pijplijnen. Ontwikkelaars kunnen consistente omgevingen creëren voor testen en implementeren, ongeacht de onderliggende infrastructuur.
Standaardisatie en afscherming:
Containers zorgen er door het bundelen van alle afhankelijkheden voor dat applicaties in verschillende omgevingen consistent worden uitgevoerd. Deze afscherming voorkomt ook conflicten tussen apps die dezelfde hostmachine delen.
High performance computing:
Containers kunnen in high-performance computing efficiënt parallelle workloads managen en opschalen.
Containers zijn licht en efficiënt, maar het kan complex zijn om er veel te gebruiken en te beheren, vooral op grote schaal. Orkestratieoplossingen zoals Docker automatiseren het implementeren, opschalen en aan netwerken koppelen voor meerdere containers.
Kortom, dankzij orkestratie kunnen veel containers worden beheerd en kunnen programma's soepel blijven werken. Kubernetes is een voorbeeld van containerorkestratie. Managed Kubernetes en Managed Rancher worden vaak door bedrijven gebruikt om complexe technologie-omgevingen te managen die op containers berusten.
In het algemeen bieden containers een snellere, flexibelere benadering van virtualisatie dan VM's. Doordat ze lichtgewicht zijn en op afgeschermde code focussen, zijn ze perfect voor moderne ontwikkel- en implementatieworkflows, vooral in omgevingen op basis van de cloud.
Overeenkomsten en verschillen
Virtual machines en containers zijn krachtige virtualisatietools, maar hun aanpak en de resulterende compromissen verschillen. VM's emuleren een computersysteem, inclusief een virtuele CPU, geheugen, opslag en netwerkinterfaces.
Elke VM draait een compleet besturingssysteem. Dit biedt een hoge mate van afscherming, waardoor VM's ideaal zijn voor scenario's waarbij u meerdere besturingssystemen op dezelfde hardware moet uitvoeren, oudere, aan specifieke besturingssysteemversies gebonden applicaties moet ondersteunen of strikte beveiligingsgrenzen nodig heeft. Deze emulatie van een heel systeem brengt echter overhead met zich mee; VM's zijn omvangrijker, starten trager op en gebruiken meer resources.
Containers zijn daarentegen eerder lichtgewicht van aard. Ze delen de kernel van het besturingssysteem van de hostmachine, maar bundelen de specifieke applicatie samen met alle noodzakelijke bibliotheken en afhankelijkheden. Hierdoor kan een container ongelooflijk snel opstarten (vaak binnen enkele seconden) en is deze zeer overdraagbaar.
Hun kleinere afmetingen zorgen ook voor grotere efficiëntie — u kunt veel meer containers dan VM's op één host gebruiken. Containers zijn zeer geschikt voor cloud-native workloads, microservices-architecturen en elke situatie waar snelheid, overdraagbaarheid en resource-efficiëntie van cruciaal belang zijn. Tegelijkertijd bieden containers een goede afscherming, maar ze zijn niet zo sterk als VM's vanwege de gedeelde kernel van het besturingssysteem.
Welke optie is beter?
Virtuele machines bieden robuuste afschermingsmogelijkheden, maar verbruiken veel resources. Omdat elke VM echter een compleet en apart besturingssysteem draait, bieden VM's de beste afscherming. Dit beschermt code tegen conflicten en garandeert beveiliging voor zeer gevoelige workloads of workloads met strikte nalevingsvereisten. Omgekeerd kunnen containers veel efficiënter werken door een lichte versie te leveren.
Voors en tegens van Virtual Machines
VM's zijn een gerenommeerde technologie met een schat aan managementtools, supportopties en erkende, betrouwbare prestaties. Hierdoor zijn ze gemakkelijker te implementeren in traditionele IT-omgevingen.
Het simuleren van een volledig computersysteem binnen elke VM kost veel CPU-, geheugen- en opslagresources. Dit kan het aantal machines beperken dat op een fysieke machine kan draaien, waardoor de kosten stijgen.
Het opstarten van een volledig gevirtualiseerd besturingssysteem brengt aanzienlijke overhead met zich mee in vergelijking met containers. Hierdoor zijn VM's minder geschikt voor situaties die een snelle implementatie vereisen en voor het opschalen of inkrimpen van services.
Ter vergelijking, containers delen de kernel van het besturingssysteem van de hostmachine, waardoor ze extreem snel opstarten (binnen enkele seconden) en significant kleiner zijn dan virtuele machines. Deze kleinere overhead vertaalt zich in lagere resourcekosten en een grotere efficiëntie.
Vergelijking met containers
Als bundel met alle noodzakelijke afhankelijkheden zijn containers zeer overdraagbaar. Hierdoor kunnen ze consistent op verschillende systemen draaien, wat ontwikkelen, testen en implementeren in de cloud vereenvoudigt.
Applicaties kunnen snel schalen door de lichtgewicht aard van containers. Het leveren of verwijderen van containers gaat veel sneller dan bij een virtuele machine. Hierdoor zijn ze ideaal om variabele workloads te verwerken.
Omgekeerd betekent het delen van de kernel van het besturingssysteem van de host dat containers minder afscherming bieden dan een VM. Hoewel er beveiligingsmaatregelen bestaan, zijn deze minder geschikt voor uiterst gevoelige multi-tenant workloads met strikte nalevingsgrenzen.
Containers zijn meestal afhankelijk van het onderliggende host-OS. Dit beperkt het type besturingssysteem dat ze intern kunnen uitvoeren. Hierdoor zijn ze minder flexibel dan VM's voor specifieke oudere apps.
Containertechnologie is nieuwer dan VM-technologie en ontwikkelt zich nog steeds snel. Orkestratietools en best practices worden steeds beter en containermanagement kan complexer blijken dan traditioneel VM-beheer.
Welke applicaties passen het beste waarbij?
Deze systeemvereisten passen het beste bij virtual machines:
Oude toepassingen consolideren:
Veel oudere applicaties zijn gebouwd met aannames betreffende een specifieke versie van het besturingssysteem of hardwareresources. VM's creëren afgeschermde omgevingen waarin aan deze afhankelijkheden wordt voldaan. Zodoende kunt u oudere toepassingen op moderne hardware uitvoeren en de levensduur ervan verlengen.
Multi-tenant omgevingen:
Als u meerdere klanten bedient, die elk hun eigen vereisten voor gegevens en applicaties hebben, is de aanzienlijke bescherming die virtuele machines bieden zeer belangrijk. VM's bieden afzonderlijke "ommuurde tuinen" voor elke klant, zodat hun gegevens en processen gescheiden blijven. Dit verbetert de beveiliging en voldoet aan nalevingsstandaarden.
Testen en ontwikkelen:
Het stelt ontwikkelaars in staat om snel testomgevingen in te richten die verschillende besturingssystemen, netwerkconfiguraties of softwareversies nabootsen. Dit maakt experimenteren met codewijzigingen gemakkelijker, het schermt het testen af van productiesystemen en het zorgt ervoor dat software betrouwbaar werkt op meerdere doelplatforms.
Disaster recovery:
De mogelijkheid om een volledige VM te repliceren met de bijbehorende toepassingen en gegevens resulteert in een robuuste tool voor noodherstel. Stand-by VM's kunnen op andere hardware of andere geografische locaties worden geactiveerd. Hierdoor wordt downtime tot een minimum beperkt en is bedrijfscontinuïteit gegarandeerd in het geval van een storing op de primaire locatie.
Containers zijn daarentegen geschikter voor:
Architecturen met microservices:
Moderne programma's gebruiken vaak kleine, losjes gekoppelde componenten (microservices), die elk een specifieke taak uitvoeren. Containers bundelen deze microservices perfect met hun noodzakelijke afhankelijkheden, wat opschalen en updates bevordert. Dit is in lijn met “agile” werken met software.
CI/CD-pijplijnen:
Containers zorgen voor consistentie, van installatie tot testen en implementatie. Code wordt eenmalig in een container verpakt en doorloopt vervolgens verschillende fasen van de pijplijn, waarbij alle afhankelijkheden intact blijven. Hierdoor worden configuratieconflicten geëlimineerd die vaak optreden bij implementaties op verschillende machines.
Cloud-native applicaties:
Containers zijn gebouwd met het oog op overdraagbaarheid en zijn naadloos te verplaatsen tussen cloudplatforms. Ze maken snel schalen mogelijk, doordat ze snel opstarten en stoppen. Hierdoor kunnen toepassingen zich automatisch aanpassen aan veranderende vereisten qua workloads. Deze resource-efficiëntie is essentieel om de voordelen van cloudcomputing te maximaliseren.
Implementaties met hoge dichtheid:
Doordat containers lichtgewicht van aard zijn, kan één fysieke server veel meer applicaties ondersteunen dan een VM-installatie. Dit maakt containers ideaal wanneer het maximaliseren van de gebruikte hardware een prioriteit is. U kunt hiermee meer waarde uit uw bestaande infrastructuur persen.
OVHcloud-producten

Simpeler en centraal beheer van uw Kubernetes-clusters
Vereenvoudig de implementatie, het beheer en de continue verbetering van uw container-applicaties in een Kubernetes-omgeving. Deze service vereenvoudigt het beheer van meerdere clusters in Kubernetes, vooral bij het gebruik van hybride of multicloud-omgevingen.
U bespaart tijd en geld, zodat u en uw team zich op het ontwikkelen van containerapplicaties kunnen concentreren.

Gratis Managed Kubernetes®-service om uw containers te orkestreren
Kubernetes® is een van de meest gebruikte tools voor orkestratie op de markt. Het wordt gebruikt door allerlei bedrijven van groot tot klein. Het kan worden ingezet om applicaties te implementeren, ze op te schalen en ze robuuster te maken – zelfs binnen hybride of multi-cloudinfrastructuren.
Service Managed Kubernetes® is gebaseerd op OVHcloud Public Cloud-instances. Met OVHcloud Load Balancers en extra schijven die erin geïntegreerd zijn, kunt u er met volledige reversibiliteit elk soort workload op hosten.