Close

Containers t.o.v. virtuele machines

Leer de verschillen tussen containers en virtuele machines (VM's), populaire providers voor allebei, en hoe ze samen kunnen worden gebruikt

Headshot Ian Buchanan
Ian Buchanan

Principal Solutions Engineer


Containers en virtuele machines zijn zeer vergelijkbare technologieën voor virtualisatie van bronnen. Virtualisatie is het proces waarbij een enkele systeembron, zoals RAM, CPU, schijf of netwerken, 'gevirtualiseerd' kan worden en als meerdere bronnen weergegeven kan worden. Het belangrijkste verschil tussen containers en virtuele machines is dat virtuele machines een hele machine virtualiseren tot op de hardwarelagen en containers alleen softwarelagen boven het besturingssysteemniveau virtualiseren.

Een container die de verschillen tussen virtuele machines en containers laat zien.

Wat is een container?


Containers zijn lichte softwarepakketten die alle benodigde vereisten bevatten om de ingesloten softwaretoepassing uit te voeren. Deze afhankelijkheden omvatten zaken als systeembibliotheken, codepakketten van externe derden en andere toepassingen op besturingssysteemniveau. De afhankelijkheden in een container bestaan in stackniveaus die hoger zijn dan het besturingssysteem.

Voordelen

  • Iteratiesnelheid
    Omdat containers licht van gewicht zijn en alleen hoogwaardige software bevatten, kunnen ze heel snel aangepast en herhaald worden.
  • Robuust ecosysteem
    De meeste runtime-systemen voor containers bieden een gehoste openbare repository van vooraf gemaakte containers. Deze containerrepository's bevatten veel populaire softwaretoepassingen zoals databases of berichtensystemen, en kunnen direct gedownload en uitgevoerd worden, wat tijd bespaart voor ontwikkelingsteams.

Nadelen

  • Exploits van gedeelde hosts
    Containers hebben allemaal hetzelfde onderliggende hardwaresysteem dat zich onder de besturingssysteemlaag bevindt. Het is mogelijk dat een exploit in één container uit de container breekt en de gedeelde hardware aantast. De meest populaire containerruntimes bestaan uit openbare repository's met vooraf gebouwde containers. Er is een veiligheidsrisico verbonden aan het gebruik van een van deze openbare beelden, aangezien ze exploits kunnen bevatten of kwetsbaar kunnen zijn zodat ze snel gekaapt kunnen worden door kwaadwillende actoren.

Populaire providers van containers


Pictogram codebuild
gerelateerde content

Kubernetes vs. Docker

Pictogram van drie ringen
Oplossing bekijken

Beheer je componenten met Compass

  • Docker
    Docker is de populairste en meest gebruikte runtime voor containers. Docker Hub is een gigantische openbare repository van populaire softwaretoepassingen in containers. Containers op Docker Hub kunnen direct gedownload en geïmplementeerd worden in een lokale Docker-runtime.
  • RKT
    (uitspraak: 'Rocket') RKT is een containersysteem dat gericht is op beveiliging. RKT-containers staan geen onveilige containerfunctionaliteit toe, tenzij de gebruiker expliciet onveilige functies inschakelt. RKT-containers zijn bedoeld om de onderliggende beveiligingsproblemen met kruisbesmetting aan te pakken waar andere containerruntime-systemen last van hebben.
  • Linux-containers (LXC)
    Het Linux Containers-project is een open-source runtime-systeem voor Linux-containers. LXC wordt gebruikt om operationele processen op systeemniveau van elkaar te isoleren. Docker gebruikt eigenlijk LXC achter de schermen. Linux Containers willen een leverancier-neutrale open-source containerruntime bieden.
  • CRI-O
    CRI-O is een implementatie van de Kubernetes Container Runtime Interface (CRI) waarmee runtimes die compatibel zijn met Open Container Initiative (OCI) kunnen worden gebruikt. Het is een licht alternatief voor het gebruik van Docker als runtime voor Kubernetes.

Wat is een virtuele machine?


Virtuele machines zijn zware softwarepakketten die een volledige nabootsing bieden van hardwareapparaten op laag niveau, zoals CPU-, schijf- en netwerkapparaten. Virtuele machines kunnen ook een aanvullende softwarestack bevatten om op de nagebootste hardware te draaien. Deze hardware- en softwarepakketten leveren samen een volledig functionele momentopname van een computersysteem op.

Voordelen

  • Volledig geïsoleerde beveiliging
    Virtuele machines werken geïsoleerd als een volledig op zichzelf staand systeem. Dit betekent dat virtuele machines immuun zijn voor exploits of interferentie van andere virtuele machines op een gedeelde host. Een individuele virtuele machine kan nog steeds worden gekaapt door een exploit, maar de geëxploiteerde virtuele machine wordt geïsoleerd en kan geen andere naburige virtuele machines besmetten.
  • Interactieve ontwikkeling
    Containers zijn meestal statische definities van de verwachte afhankelijkheden en configuratie die nodig zijn om de container uit te voeren. Virtuele machines zijn dynamischer en kunnen interactief worden ontwikkeld. Zodra de basishardwaredefinitie voor een virtuele machine is opgegeven, kan de virtuele machine vervolgens worden behandeld als een kale computer. Software kan handmatig op de virtuele machine worden geïnstalleerd en van de virtuele machine kan een momentopname worden gemaakt om de huidige configuratiestatus vast te leggen. De momentopnamen van de virtuele machine kunnen gebruikt worden om de virtuele machine naar dat tijdstip te herstellen of om extra virtuele machines met die configuratie op te starten.

Nadelen

  • Iteratiesnelheid
    Het bouwen en regenereren van virtuele machines is tijdrovend omdat ze een full-stack systeem bevatten. Wijzigingen aan een momentopname van een virtual machine regenereren en valideren kan veel tijd in beslag nemen.
  • Opslagkosten
    Virtuele machines kunnen veel ruimte in beslag nemen. Ze kunnen snel groeien tot meerdere gigabytes. Dit kan leiden tot problemen met een tekort aan schijfruimte op de hostmachine van de virtuele machine.

Populaire providers van virtuele machines

  • Virtualbox
    Virtualbox is een gratis en open source nabootsingssysteem voor x86-architectuur dat eigendom is van Oracle. Virtualbox is een van de meest populaire en gevestigde platforms voor virtuele machines met een ecosysteem van aanvullende tools waarmee afbeeldingen van virtuele machines ontwikkeld en gedistribueerd kunnen worden.
  • VMware
    VMware is een beursgenoteerd bedrijf dat zijn activiteiten heeft gebaseerd op een van de eerste x86-hardwarevirtualisatietechnologieën. VMware wordt geleverd met een hypervisor, een hulpprogramma waarmee meerdere virtuele machines geïmplementeerd en beheerd kunnen worden. VMware heeft een robuuste gebruikersinterface voor het beheer van virtuele machines. VMware is een geweldige virtuele machine voor ondernemingen die support biedt.
  • QEMU
    QEMU is de meest robuuste hardwarenabootsingsoptie voor virtuele machines. Het biedt ondersteuning aan elke algemene hardware-architectuur. QEMU is een hulpprogramma dat enkel via de opdrachtregel werkt en biedt geen grafische gebruikersinterface voor configuratie of uitvoering. Deze afweging zorgt dat QEMU een van de snelste opties voor virtuele machines is.

Welke optie is beter voor jou?


Als je specifieke hardwarevereisten hebt voor je project, of je ontwikkelt op het ene hardwareplatform en je moet je op een ander hardwareplatform richten, zoals Windows versus macOS, dan heb je een virtuele machine nodig. Aan de meeste andere vereisten voor 'alleen software' kan voldaan worden door containers te gebruiken.

Hoe kun je containers en virtuele machines samen gebruiken?


Het is heel goed mogelijk om containers en virtuele machines tegelijk te gebruiken, hoewel de praktische gebruiksscenario's beperkt kunnen zijn. Er kan een virtuele machine worden gemaakt die een unieke hardwareconfiguratie nabootst. Daarna kan er een besturingssysteem geïnstalleerd worden op de hardware van deze virtuele machine. Zodra de virtuele machine functioneert en het besturingssysteem opstart, kan er een containerruntime op het besturingssysteem geïnstalleerd worden. Op dit moment hebben we een functionerend computersysteem met nagebootste hardware waarop we containers kunnen installeren.

Een praktisch gebruik van deze configuratie zijn experimenten voor systeem-op-chip-implementaties. Populaire computationele apparaten met een systeem-op-chip, zoals de Raspberry Pi of de BeagleBone-ontwikkelborden, kunnen nagebootst worden als een virtuele machine zodat hier bij wijze van experiment containers op gedraaid kunnen worden voordat ze op de daadwerkelijke hardware worden getest.

Maar vaak zal waarschijnlijk door een van de twee aan je behoeften worden voldaan. Het belangrijkste bij het kiezen tussen containers of virtuele machines voor je virtualisatiebehoeften is inzicht in je resourcebehoeften en de afwegingen die je bereid bent te maken.

Ian Buchanan
Ian Buchanan

Hoewel Ian een brede en uitgebreide kennis heeft van zowel Java als .NET, staat hij vooral bekend als expert op het gebied van agile methoden bij grote ondernemingen. Op dit moment richt hij zich op de opkomende DevOps-cultuur en de tools die een betere continue integratie, continue levering en gegevensanalyses mogelijk maken. Tijdens zijn carrière heeft hij met succes enterprise softwareontwikkelingstools beheerd in alle fases van hun levenscyclus. Ook was hij de motor achter organisatiebrede procesverbeteringen resulterend in een hogere productiviteit, kwaliteit en klanttevredenheid. Hij heeft teams met meerdere nationaliteiten onder zijn leden opgericht. Voor deze teams was zelfsturing en zelforganisatie erg belangrijk. Wanneer hij geen presentaties geeft of codeert, is hij bezig met parsing, metaprogrammering en domeinspecifieke talen. Volg Ian via @devpartisan.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Toelichting DevOps

Compass-community

illustratie obstakels overwinnen

Tutorial: Een component aanmaken

Map-illustratie

Ga gratis aan de slag met Compass

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up