Containers versus virtuele machines
Van toepassing op: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016
In dit onderwerp worden enkele van de belangrijkste overeenkomsten en verschillen tussen containers en virtuele machines (VM's) besproken en wanneer u deze mogelijk wilt gebruiken. Containers en VM's hebben elk hun gebruik: veel implementaties van containers gebruiken VM's als hostbesturingssysteem in plaats van rechtstreeks op de hardware uit te voeren, met name wanneer containers in de cloud worden uitgevoerd.
Zie Windows en containersvoor een overzicht van containers.
Containerarchitectuur
Een container is een geïsoleerde, lichtgewicht silo voor het uitvoeren van een toepassing op het hostbesturingssysteem. Containers bouwen voort op de basis van de kernel van het hostbesturingssysteem (die kan worden beschouwd als de onderliggende structuur van het besturingssysteem), en bevatten alleen apps en bepaalde lichtgewicht API's van het besturingssysteem en services die draaien in de gebruikersmodus, zoals wordt weergegeven in dit diagram.
Architectuur van virtuele machines
In tegenstelling tot containers voeren VM's een volledig besturingssysteem uit, inclusief een eigen kernel, zoals wordt weergegeven in dit diagram.
Containers versus virtuele machines
In de volgende tabel ziet u enkele overeenkomsten en verschillen van deze complementaire technologieën.
Kenmerk | Virtuele machine | Opslagtank |
---|---|---|
Isolatie | Biedt volledige isolatie van het hostbesturingssysteem en andere VM's. Dit is handig wanneer een sterke beveiligingsgrens essentieel is, zoals het hosten van apps van concurrerende bedrijven op dezelfde server of hetzelfde cluster. | Biedt doorgaans lichtgewicht isolatie van de host en andere containers, maar biedt geen zo sterke beveiligingsgrens als een VIRTUELE machine. (U kunt de beveiliging verhogen met behulp van Hyper-V isolatiemodus om elke container in een lichtgewicht VM te isoleren). |
Besturingssysteem | Voert een volledig besturingssysteem met inbegrip van de kernel uit, waardoor meer systeemresources (CPU, geheugen en opslag) nodig zijn. | Voert het gebruikersmodusgedeelte van een besturingssysteem uit en kan worden aangepast om alleen de benodigde services voor uw app te bevatten, met behulp van minder systeembronnen. |
Gastcompatibiliteit | Met de virtuele machine kun je bijna elk besturingssysteem uitvoeren. | Wordt uitgevoerd op de dezelfde besturingssysteemversie als de host (Hyper-V isolatie stelt u in staat eerdere versies van hetzelfde besturingssysteem uit te voeren in een lichtgewicht VM-omgeving). |
Implementatie | Afzonderlijke VM's implementeren met behulp van Windows Admin Center of Hyper-V Manager; meerdere VM's implementeren met behulp van PowerShell of System Center Virtual Machine Manager. | Afzonderlijke containers implementeren met behulp van Docker via de opdrachtregel; meerdere containers implementeren met behulp van een orchestrator zoals Azure Kubernetes Service. |
Updates en upgrades van het besturingssysteem | Download en installeer besturingssysteemupdates op elke VIRTUELE machine. Voor het installeren van een nieuwe versie van het besturingssysteem moet een upgrade worden uitgevoerd of vaak alleen een geheel nieuwe VIRTUELE machine worden gemaakt. Dit kan tijdrovend zijn, vooral als u veel VM's hebt. | Het bijwerken of upgraden van de besturingssysteembestanden in een container is hetzelfde:
|
Permanente opslag | Gebruik een virtuele harde schijf (VHD) voor lokale opslag voor één virtuele machine of een SMB-bestandsshare voor opslag die wordt gedeeld door meerdere servers. | Gebruik Azure Disks voor lokale opslag voor één knooppunt of Azure Files (SMB-shares) voor opslag die wordt gedeeld door meerdere knooppunten of servers. |
Taakverdeling | Taakverdeling voor virtuele machines verplaatst actieve VM's naar andere servers in een failovercluster. | Containers zelf worden niet verplaatst; In plaats daarvan kan een orchestrator containers op clusterknooppunten automatisch starten of stoppen om wijzigingen in de belasting en beschikbaarheid te beheren. |
Fouttolerantie | VM's kunnen een failover naar een andere server in een cluster uitvoeren, waarbij het besturingssysteem van de virtuele machine opnieuw wordt opgestart op de nieuwe server. | Als een clusterknooppunt mislukt, worden alle containers die erop worden uitgevoerd, snel opnieuw gemaakt door de orchestrator op een ander clusterknooppunt. |
Netwerken | Maakt gebruik van virtuele netwerkadapters. | Maakt gebruik van een geïsoleerde weergave van een virtuele netwerkadapter, waardoor de firewall van de host iets minder wordt gedeeld met containers, terwijl er minder resources worden gebruikt. Zie Windows-containernetwerkenvoor meer informatie. |