Förbereda en Windows Server 2019-värd för containerdistribution

Slutförd

Kommentar

I den här Microsoft Learn-modulen utförs alla exempel med Docker CLI. Dessa kommandon bör fungera på Windows 10 och 11 med Docker Desktop, samt på Windows Server med Moby eller MCR. Miljöer med container har andra CLI-alternativ och kommandona skiljer sig åt.

Contoso Windows Server-administratören måste förstå och hämta containerbasavbildningar, hur du avgör vilka containerbasavbildningar som är tillgängliga och lämpliga att använda och hur du drar ned basavbildningar lokalt. På så sätt kan administratören skapa och köra alla nödvändiga containrar.

Ladda ned containerbaserade avbildningar

När du har installerat valfri containerkörning är nästa steg att hämta en basavbildning som används för att tillhandahålla ett grundläggande lager av OS-tjänster för din container. Du kan sedan skapa och köra en container som baseras på basavbildningen.

En containerbasavbildning innehåller:

  • Os-filerna i användarläge som behövs för att stödja det etablerade programmet.

  • Alla körningsfiler eller beroenden som programmet kräver.

  • Alla andra olika konfigurationsfiler som appen måste etablera och köra korrekt.

Microsoft tillhandahåller basoperativsystemavbildningarna i följande tabell som utgångspunkt för att skapa egna containeravbildningar.

Basavbildningsnamn Detaljer
Server Core En avbildning som innehåller en delmängd av API:erna (Windows Server Application Programming Interfaces), till exempel det fullständiga .NET-ramverket. Den innehåller även de flesta serverroller. Den här avbildningen är perfekt för scenarier där ett befintligt program "containeriseras".
Nano Server Den minsta Windows Server-avbildningen, med stöd för .NET-API:er och vissa serverroller. Den här avbildningen kräver att programmet skrivs för Nano Server och är perfekt för nya program som förlitar sig på Windows.
Windows Innehåller den fullständiga uppsättningen Windows-API:er och systemtjänster. innehåller dock inte serverroller. Den här avbildningen ersattes av Server-avbildningen från och med Windows Server 2022.
Server I likhet med Windows-avbildningen innehåller den här basavbildningen den fullständiga uppsättningen Windows Server-API:er och systemtjänster. Detta resulterar i en större containeravbildning, men högre programkompatibilitet. Den här avbildningen är idealisk för scenario där ett befintligt program containeriseras, men Server Core-avbildningen tillhandahåller inte nödvändiga beroenden för programmet.

Kommentar

Windows-värdoperativsystemets version måste matcha containerns OS-version. Om du vill köra en container baserat på en nyare Windows-version måste du se till att en motsvarande OS-version är installerad på värden.

Om värdservern innehåller en nyare operativsystemversion kan du använda Hyper-V-isoleringsläget för att köra en äldre version av Windows-containrar.

Mer information om kompatibilitet för värd- och containeravbildningar finns i kompatibiliteten för Windows-containerversionen.

Du hittar och laddar ned basavbildningar via Microsoft Container Registry. Använd docker pull-kommandot för att ladda ned en specifik basavbildning.

Viktigt!

Os-basavbildningar tillhandahåller Windows Server OS-komponenterna och dess serverroller. Microsoft tillhandahåller även specifika avbildningar för olika ramverk som redan har installerats, till exempel IIS, .Net Framework och .Net.

När du anger kommandot docker pull anger du den version som matchar värddatorns version. Om du till exempel vill hämta en Nano Server-avbildning baserad på Windows Server 2022 använder du följande kommando:

docker pull mcr.microsoft.com/windows/nanoserver:ltsc2022

Om du vill hämta en Windows Server 2019 Server Core-avbildning använder du följande kommando:

docker pull mcr.microsoft.com/windows/servercore:ltsc2019

När du har laddat ned de basavbildningar som behövs för containrarna kan du verifiera de avbildningar som är tillgängliga lokalt och visa metadatainformation genom att ange följande kommando:

docker images

Köra en Windows-container

I storskaliga produktionsmiljöer interagerar du troligen med containrar via en containerorkestrerare, till exempel Kubernetes eller Docker Swarm. I mindre miljöer och utvecklings-/testmiljöer kan du skapa, ta bort och hantera containrar på Windows Server via CLI.

Du kan också bläddra i Docker Hub eller Microsoft Container Registry för att få åtkomst till och hämta fördefinierade avbildningar. Det finns två huvudsakliga alternativ för att skapa en containeravbildning som värd för ditt program:

  • Skapa en containeravbildning med utvecklarverktyg. När programmet skrivs av en utvecklare kan det paketeras direkt från utvecklarens IDE, till exempel Visual Studio.

  • Skapa en containeravbildning med en dockerfile. En dockerfile är ett textdokument som innehåller alla kommandon som en användare kan anropa på kommandoraden för att montera en avbildning. Verktyg som Visual Studio skapar dockerfile internt för ett nytt program, men du har möjlighet att skapa din egen dockerfile manuellt.

Kommentar

Det finns ytterligare ett alternativ för att skapa containeravbildningar baserat på en container som körs. Detta liknar att skapa en gyllene avbildning från en virtuell dator som körs. Den här metoden rekommenderas inte. Mer information finns i nästa avsnitt.

Automatisera skapandet av containeravbildningar med dockerfile i Windows

Docker Desktop-motorn och MCR innehåller verktyg för att automatisera processen med att skapa containeravbildningar. Även om du kan skapa containeravbildningar manuellt, ger införandet av en automatiserad process för att skapa avbildningar många fördelar, bland annat:

  • Möjligheten att lagra containeravbildningar som kod.

  • Snabb och exakt återskapande av containeravbildningar i underhålls- och uppgraderingssyfte.

  • Kontinuerlig integrering mellan containeravbildningar och utvecklingscykeln.

Kommentar

Moby och containerd innehåller ingen inbyggd avbildningsversionslösning. Du kan också använda en containeravbildningsversionstjänst, till exempel ACR-uppgifter (Azure Container Registry).

Docker-komponenterna som driver den här automatiseringen är dockerfile-textfilen och docker build-kommandot:

  • Dockerfile-textfilen innehåller de instruktioner som behövs för att skapa en ny containeravbildning. Dessa instruktioner omfattar identifiering av en befintlig avbildning som ska användas som bas, kommandon som ska köras under processen för att skapa avbildningen och ett kommando som körs när nya instanser av containeravbildningen distribueras.

  • Kommandot docker build förbrukar en dockerfile och utlöser sedan processen för att skapa avbildningar.

Hantera containrar med hjälp av CLI

Använd följande kommandon för att skapa och hantera containrar och containeravbildningar:

  • Kommandot docker images listar de tillgängliga avbildningarna på containervärden. En anledning till detta är att använda befintliga containeravbildningar som bas för nya containrar:
docker images
  • Kommandot docker run skapar en container med hjälp av en containeravbildning. Följande kommando skapar till exempel en container som baseras på Windows Server Core-containeravbildningen. Ange inte ett isoleringsläge i kommandot, så Docker använder standardisoleringsläget, som är processisolering. Parametern --name används för att ange ett namn till containern. -den används för att ha en interaktiv session med containern (till skillnad från -d för att köra fristående) och PowerShell-instruktionen öppnar en PowerShell-session:
docker run --name IIS -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell
  • Kommandot docker commit checkar in de ändringar som du har gjort i en container till en ny containeravbildning. Incheckningsåtgärden innehåller inte data som finns i volymer som monterats i containern. Som standard pausas containern medan den nya containeravbildningen skapas: (tänk på att det här alternativet inte rekommenderas som bästa praxis för att skapa nya containeravbildningar)
docker commit
  • Kommandot docker stop stoppar en container som körs:
docker stop <container name or ID>
  • Kommandot docker rm tar bort en eller flera containrar:
docker rm <container name or ID>

Demonstration

Följande video visar hur du:

  • Installera Docker CE/MobyWindows Server.

  • Hämta en containeravbildning och kör en ny container interaktivt.

  • Distribuera en IIS-containerinstans och verifiera webbsidan i webbläsaren.

De viktigaste stegen i processen är:

  1. Installera Docker CE/MobyWindows Server.

  2. Ladda ned en Windows Server Core-avbildning som innehåller IIS (Internet Information Services). Eftersom containerbasavbildningsversionen måste matcha värdens, använder du containern iis:windowsservercore-ltsc2022.

  3. Kör följande Docker-kommando med följande parametrar:

    • Kör den nedladdade containern som en bakgrundstjänst med parametern -d.

    • Konfigurera nätverk så att port 80 för containervärden mappar till port 80 i containern.

Docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2022
  1. Hämta container-ID:t med hjälp av följande kommando:
docker ps
  1. Stoppa containern med hjälp av följande kommando:
docker stop <container ID>

Snabbgranskning