Definiera containrar

Slutförd

När Contoso migrerar och virtualiserar olika arbetsbelastningar kan ett alternativ för att containerisera vissa av arbetsbelastningarna inträffa. Windows Server-administratören utvärderar containrar, förstår hur de fungerar och vilka fördelarna med att använda dem kan vara. Fördelarna kan vara mobilitet, flexibilitet, ökad effektivitet och servertäthet. Alla dessa fördelar bidrar till mer optimerade serverarbetsbelastningar och konsekvens i utvecklingsmiljöer.

Vad är containrar för något?

En container används för att paketera ett program tillsammans med alla dess beroenden och abstrahera det från värdoperativsystemet (OS) där det körs. Containrar ger en lätt utvecklings- och körningsmiljö där program enkelt kan köras och delas under utvecklingen. En container är inte bara isolerad från värdoperativsystemet, den är också isolerad från andra containrar. Isolerade containrar ger en virtuell körning, vilket också kan förbättra säkerheten och tillförlitligheten för de appar som körs i dem.

Traditionellt har ett program utvecklats för att köras på en processor, maskinvara och operativsystemplattform som stöds. Programvaruprogram kräver vanligtvis ytterligare kodning för att ge stöd för de olika körningsplattformarna. Med så många olika databehandlingssystem behövs en effektivare plattform för programvaruutveckling och hantering för att stödja portabilitet mellan flera datormiljöer. Containrar hjälper till att tillhandahålla sådan portabilitet.

Fördelar med att använda containrar

Fördelarna med att använda containrar är följande:

  • Möjligheten att köra var som helst. Containrar kan köras på olika plattformar, till exempel Linux-, Windows- och Mac-operativsystem. De kan finnas på en lokal arbetsstation, på servrar i lokala datacenter eller etableras i molnet.

  • Isolering. För ett program verkar en container vara ett fullständigt operativsystem. Processor-, minnes-, lagrings- och nätverksresurserna virtualiseras i containern och isoleras från värdplattformen och andra program.

  • Ökad effektivitet. Containrar kan snabbt distribueras, uppdateras och skalas för att stödja en mer flexibel utvecklings-, test- och produktionslivscykel. Eftersom de är mer effektiva när det gäller resurser som de förbrukar är deras fotavtryck mindre, vilket möjliggör ökad densitet på servrar.

  • En konsekvent utvecklingsmiljö. Utvecklare använder containrar som en konsekvent och förutsägbar utvecklingsmiljö som stöder olika utvecklingsspråk som Java, .NET, Python och Node.js. Utvecklare vet att oavsett var programmet distribueras ser containern till att programmet körs som avsett.

Så här fungerar containrar

Processorn i en Windows-standarddator har två olika lägen: ett kernelläge och ett användarläge. Core OS-komponenter och de flesta enhetsdrivrutiner körs i kernelläge, medan program körs i användarläge.

När du installerar containerteknik på en dator skapar varje container en isolerad, lätt silo som används för att köra en app på värdoperativsystemet. En container bygger på och delar det mesta av värdoperativsystemets kernel för att få åtkomst till filsystemet och registret.

Varje container har en egen kopia av systemfilerna i användarläge, som är isolerade från andra containrar och från värdens egen användarlägesmiljö. Möjligheten att isolera användarläget tillhandahålls av en containerbasavbildning, som består av systemfiler i användarläge som behövs för att stödja en paketerad app. Mallar för containerbasavbildningar ger ett grundläggande lager av OS-tjänster som används av den containerbaserade appen som inte tillhandahålls (eller begränsas) från värdens kernellägeslager.

Det lager där program- och kodändringar görs ligger ovanpå dessa fördefinierade avbildningslager för containerbasen för operativsystem. Dessa bas-OS-lager utvecklas och uppdateras separat från de containerlager som används aktivt för program- eller kodändringar. Basskikten hämtas till den lokala arbetsmiljön utan att uppdateras, och sedan startas arbetet i containerlager som körs på basskikten. Detta möjliggör utvecklingsmiljöer som är mindre, enklare och mer portabla.

Diagram som visar ett exempel på en containerlageruppsättning med lager i en stack i följande ordning nedifrån och upp: Base OS-lager, IIS-lager, ASP.NET Layer och Ditt webbplatsskikt.

När du skapar en egen containeravbildning som värd för ditt program börjar du med att använda en avbildning av containerbasoperativsystemet eller en fördefinierad containeravbildning som har de beroenden du behöver. Ovanpå dessa lager skapar du dina egna lager med det program som du vill köra i en container. Varje åtgärd för att skapa containeravbildningen bygger ovanpå den sista. Detta ökar bildstorleken, men gör att du enkelt kan separera operativsystemet, ramverket, beroendena och programskikten.

Containrar och mikrotjänster

Mikrotjänstprogram definieras som en molnbaserad arkitekturmetod där ett enda program består av många löst kopplade och oberoende distribuerade mindre komponenter eller tjänster. Var och en av dessa mindre komponenter eller tjänster kan representeras av en container. Containrar implementerar dock inte nödvändigtvis en arkitektur för mikrotjänster.

En container kan vara värd för ett monolitiskt program, men de har inte utformats för den avsikten. Som standard förutsätter Docker (eller en annan containerkörning) samt containerorkestreraren att en container alltid kan tas bort på ett säkert sätt och att en annan container helt enkelt kan ta plats vid behov. Om du konfigurerar ett program för att skriva till den virtuella datordisken på en virtuell dator kan du på ett säkert sätt stoppa och starta den virtuella datorn och data sparas på disken, precis som den virtuella datorn startar och fortsätter att fungera på ett säkert sätt. Med containrar, om du tar bort en container och tar med en annan i dess ställe, kommer endast de befintliga lagren i containeravbildningen att finnas där. I en mikrotjänstmiljö bör detta inte vara ett problem om du har status och data i beständighet.

Även om du kan köra en container och hantera den ungefär som en virtuell dator rekommenderar vi att du använder metoder för separation av tillstånd och data och ser till att containern kan fortsätta att tas bort. På så sätt kan du dra nytta av andra metoder, till exempel DevOps.

I praktiken bör du inte lagra några data eller tillstånd i containeravbildningen och dess lager. I stället bör du använda extern beständig lagring som gör att alla containerinstanser kan komma åt den.