Visa en lista över skillnaderna mellan containrar och virtuella datorer

Slutförd

Contoso Windows Server-administratören måste avgöra vilka arbetsbelastningar och scenarier som är lämpliga för virtuella datorer och vilka som är lämpligare för containrar. De utvärderar egenskaperna för vm- och containerarbetsbelastningar, scenarier där de kan användas och under vilka omständigheter containerarbetsbelastningar kan användas för att öka effektiviteten.

Virtuella datorer jämfört med containrar

Både virtuella datorer och containrar är virtualiseringstekniker som används för att tillhandahålla isolerade och bärbara datormiljöer för program och tjänster:

  • Virtuella datorer simulerar en hel dator, inklusive virtualiserad maskinvara, operativsystem, användarläge och eget kernelläge. Virtuella datorer är ganska flexibla och ger enormt stöd för program. Virtuella datorer tenderar dock att vara stora och förbruka värddatorresurser.

  • Containrar (som tidigare beskrivits) bygger på värdoperativsystemets kernel och innehåller en process för isolerat användarläge för den paketerade appen. Detta hjälper till att göra containrar mycket lätta och snabba att starta. Förutom virtuella datorer kan containrar enkelt flyttas från utveckling till testning till produktionsmiljöer. Men eftersom operativsystemet inte är riktigt detsamma körs inte alla program på samma sätt (eller alls) i en containermiljö.

Likheter och skillnader

I följande tabell sammanfattas likheterna mellan och skillnaderna mellan funktioner för virtuella datorer och containrar.

Funktion Virtuell dator Container
Isolering Ger fullständig isolering från värdoperativsystemet och andra virtuella datorer. Ger enkel isolering från värden och andra containrar.
OS Kör ett fullständigt operativsystem inklusive kerneln. Kör endast användarlägesdelen av ett operativsystem.
Gästkompatibilitet Det går att köra alla operativsystem som stöds i den virtuella datorn Windows-containrar kräver matchande versioner av värd- och containeroperativsystem. (Mer information och alternativ finns i isoleringsläget)
Distribution Distribueras med hjälp av Hyper-V-hanteraren eller andra hanteringsverktyg för virtuella datorer. Distribueras och hanteras med hjälp av Docker eller en annan containerkörning. Flera containrar kan distribueras med hjälp av en orkestrerare, till exempel Kubernetes.
Beständig lagring Använder virtuella hårddiskfiler eller SMB-resurs (Server Message Block). Data sparas inte när en container inte längre finns. Om du vill spara data i en container med Windows Server måste du använda beständig lagring.
Belastningsutjämning och hög tillgänglighet Använder ett Windows-redundanskluster eller En Windows-lastbalanserare för att flytta virtuella datorer efter behov och stödja högre volym. Använder en containerorkestrerare för att automatiskt starta och stoppa containrar, skala automatiskt och stödja ytterligare trafik.
Nätverk Använder virtuella nätverkskort. Olika nätverksalternativ är tillgängliga beroende på scenariot. Standard är ett NAT-nätverk (Network Address Translation) som använder en intern växel och mappar portar från värd till container.

Kommentar

Det är vanligt att etablera containrar i en mycket optimerad virtuell dator för att ge förbättrad isolering och säkerhet.

Fördelar med containrar

På hög nivå, containrar:

  • Kräv relativt få resurser. De är mindre resursintensiva än virtuella datorer.

  • Starta snabbt. Starttiderna för containrar motsvarar ungefär den tid som krävs för att starta en ny process.

  • Förbättra serverdensiteten. Containrar möjliggör effektivare användning av minne, disk och PROCESSOR från den tillgängliga maskinvaran än virtuella datorer. Detta resulterar i färre inaktiva servrar, vilket resulterar i bättre användning av befintliga beräkningsresurser. Detta är särskilt viktigt för molnleverantörer och användare eftersom det kan minska kostnaderna.

  • Portabilitet. Containrar beter sig likadant oavsett vilken miljö de kör. En container har beroenden för att ett program ska fungera. Detta gör att en container kan utföra samma sak mellan utveckling, testning och produktion samt mellan lokalt och moln.

Följande bild ger en jämförelse av isolering och effektivitet mellan datorer, virtuella datorer, containrar och processer, och visar att:

  • Datorer ger störst grad av isolering. Isoleringen är progressivt mindre för virtuella datorer, containrar och processer.

  • Processerna ger största möjliga effektivitet och i sin tur densitet. Containrar, virtuella datorer och datorer är gradvis mindre effektiva.

  • Maskinvaru-, kernel- och systemresurser (till exempel ett filsystem) delas:

    • Virtuella datorer delar endast maskinvara.

    • Containrar delar maskinvara och en kernel (förutom Windows Hyper-V-containrar som inte delar en kernel).

    • Processer delar maskinvara, en kernel och systemresurser.

    • Datorer delar inte något av dessa.

Diagram som visar jämförelse av isolering och effektivitet mellan datorer, virtuella datorer, containrar och processer.

Dricks

För beständig lagring kan du använda en bindningsmontering för att montera en plats på den lokala datorn. Filer på platsen blir tillgängliga när du startar om en container eller om du vill dela filerna med flera containrar. Om du vill att en container ska köras på flera datorer med åtkomst till samma filer ska en namngiven volym eller SMB-montering användas i stället.

Orkestratorer som Kubernetes har en egen implementering av beständig lagring.

Varning

Bind inte monteringskänsliga kataloger som C:\ till en obetrodd container. Detta skulle göra det möjligt för den obetrodda containern att ändra filer på värden som den normalt inte skulle ha åtkomst till och kan skapa en säkerhetsöverträdelse. Se dessutom till att containern fungerar korrekt när du flyttar till en annan miljö. Det innebär att du undviker att binda en container till en specifik enhet på en specifik värd.

När du ska välja en virtuell dator

Använd en virtuell dator när du:

  • Behöver hantera flera operativsystem.

  • Du måste köra en app som kräver alla resurser och tjänster i ett fullständigt operativsystem, till exempel ett grafiskt användargränssnitt (GUI).

  • Behöver en miljö som bevarar ändringar och är beständig. Exempel: Databaser är inte bra kandidater att köra på containrar.

  • Kräv fullständig isolering och säkerhet.

När du ska välja en container

Använd en container när du:

  • Behöver ett enkelt programpaket som startar snabbt.

  • Du behöver distribuera flera instanser av en enskild app – automatisk skalning och/eller vågrät skalning krävs.

  • Behöver köra en app eller process som inte är beständig på begäran.

  • Behöver distribuera en app som kan köras på valfri underliggande infrastruktur.