Dela via


Introduktion till containrar och Docker

Tips/Råd

Det här innehållet är ett utdrag från eBook, .NET Microservices Architecture for Containerized .NET Applications, tillgängligt på .NET Docs eller som en kostnadsfri nedladdningsbar PDF som kan läsas offline.

Miniatyrbild av omslag för eBooken om .NET mikroservicearkitektur för containerbaserade .NET-applikationer.

Containerisering är en metod för programvaruutveckling där ett program eller en tjänst, dess beroenden och dess konfiguration (abstraherade som distributionsmanifestfiler) paketeras tillsammans som en containeravbildning. Det containerbaserade programmet kan testas som en enhet och distribueras som en containeravbildningsinstans till värdoperativsystemet (OS).

Precis som fraktcontainrar tillåter att varor transporteras med fartyg, tåg eller lastbil oavsett last inuti, fungerar programvarucontainrar som en standardenhet för programvarudistribution som kan innehålla olika kod och beroenden. Med containerbaserad programvara på det här sättet kan utvecklare och IT-proffs distribuera dem i miljöer med liten eller ingen ändring.

Containrar isolerar även program från varandra i ett delat operativsystem. Containerbaserade program körs ovanpå en containervärd som i sin tur körs på operativsystemet (Linux eller Windows). Containrar har därför ett betydligt mindre fotavtryck än vm-avbildningar(VM).

Varje container kan köra ett helt webbprogram eller en tjänst, enligt bild 2–1. I det här exemplet är Docker-värden en containervärd och App1, App2, Svc 1 och Svc 2 är containerbaserade program eller tjänster.

Diagram som visar fyra containrar som körs på en virtuell dator eller en server.

Bild 2-1. Flera containrar som körs på en containervärd

En annan fördel med containerisering är skalbarhet. Du kan skala ut snabbt genom att skapa nya containrar för kortsiktiga uppgifter. Ur programsynpunkt liknar instansiering av en avbildning (att skapa en container) instansiera en process som en tjänst eller en webbapp. För tillförlitlighet, när du kör flera instanser av samma image på flera värdservrar, vill du vanligtvis att varje container (imageinstans) ska köras på en annan värdserver eller virtuell dator i olika feldomäner.

I korthet erbjuder containrar fördelarna med isolering, portabilitet, flexibilitet, skalbarhet och kontroll i hela arbetsflödet för programlivscykeln. Den viktigaste fördelen är miljöns isolering mellan Dev och Ops.