Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Dricks
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.
              
               
              
              
            
De officiella .NET Docker-avbildningarna är Docker-avbildningar som skapats och optimerats av Microsoft. De är offentligt tillgängliga på Microsofts artefaktregister. Du kan söka i katalogen för att hitta alla .NET-avbildningsdatabaser, till exempel .NET SDK-lagringsplats .
Varje lagringsplats kan innehålla flera avbildningar, beroende på .NET-versioner och beroende på operativsystem och versioner (Linux Debian, Linux Alpine, Windows Nano Server, Windows Server Core och så vidare). Avbildningsdatabaser tillhandahåller omfattande taggning som hjälper dig att välja inte bara en specifik ramverksversion, utan även för att välja ett operativsystem (Linux-distribution eller Windows-version).
.NET- och Docker-avbildningsoptimeringar för utveckling jämfört med produktion
När du skapar Docker-avbildningar för utvecklare fokuserade Microsoft på följande huvudscenarier:
- Avbildningar som används för att utveckla och skapa .NET-appar. 
- Avbildningar som används för att köra .NET-appar. 
Varför flera bilder? När du utvecklar, skapar och kör containerbaserade program har du vanligtvis olika prioriteringar. Genom att tillhandahålla olika avbildningar för dessa separata uppgifter hjälper Microsoft till att optimera de separata processerna för att utveckla, skapa och distribuera appar.
Under utveckling och bygge
Under utvecklingen är det viktigt hur snabbt du kan iterera ändringar och möjligheten att felsöka ändringarna. Storleken på bilden är inte lika viktig som möjligheten att göra ändringar i koden och se ändringarna snabbt. Vissa verktyg och "build-agent containers" använder .NET-avbildningen för utveckling (mcr.microsoft.com/dotnet/sdk:8.0) under utveckling och byggprocess. När du skapar i en Docker-container är de viktiga aspekterna de element som behövs för att kompilera din app. Detta inkluderar kompilatorn och andra .NET-beroenden.
Ett annat bra alternativ är utvecklingscontainrar. Dessa containrar är fördefinierade utvecklingsmiljöer som är redo att användas– du behöver inte bekymra dig om beroenden och konfigurationer. De är också enkla att anpassa för att inkludera ytterligare verktyg eller beroenden. Utvecklingscontainrar ger en konsekvent och reproducerbar konfiguration som är enkel att dela med ditt team. Utvecklingscontainrar överensstämmer med specifikationen för utvecklingscontainer, och många populära utvecklarverktyg, inklusive Visual Studio Code och GitHub Codespaces, stöder dem. .NET dev-containrarna baseras på .NET SDK-avbildningen och innehåller .NET SDK, runtime och andra verktyg som du behöver för att utveckla .NET-program.
Varför är den här typen av byggbild viktig? Du distribuerar inte den här avbildningen till produktion. I stället är det en avbildning som du använder för att skapa det innehåll som du placerar i en produktionsbild. Den här avbildningen skulle användas i din CI-miljö (continuous integration) eller byggmiljö när du använder Docker-versioner i flera steg.
Under produktion
Det som är viktigt i produktionen är hur snabbt du kan distribuera och starta dina containrar baserat på en .NET-produktionsbild. Därför är körningsavbildningen som baseras på mcr.microsoft.com/dotnet/aspnet:8.0 liten så att den kan färdas snabbt över nätverket från Docker-registret till Docker-värdarna. Innehållet är redo att köras, vilket ger den snabbaste tiden från att starta containern till att bearbeta resultat. I Docker-modellen finns det inget behov av kompilering från C#-kod, eftersom det finns när du kör dotnet build eller dotnet publish när du använder byggcontainern.
I den här optimerade avbildningen placerar du bara de binärfiler och annat innehåll som behövs för att köra programmet. Innehållet som skapas av dotnet publish innehåller till exempel bara kompilerade .NET-binärfiler, bilder, .js och .css filer. Med tiden ser du bilder som innehåller för-jitted-paket (kompilering från IL till inbyggt som inträffar vid körning).
Även om det finns flera versioner av .NET- och ASP.NET Core-avbildningarna delar de alla ett eller flera lager, inklusive basskiktet. Därför är mängden diskutrymme som behövs för att lagra en avbildning liten. den består bara av deltat mellan din anpassade avbildning och dess basavbildning. Resultatet är att det är snabbt att hämta avbildningen från registret.
När du utforskar .NET-avbildningsdatabaserna på Microsofts artefaktregister hittar du flera bildversioner klassificerade eller markerade med taggar. De här taggarna hjälper dig att avgöra vilken som ska användas, beroende på vilken version du behöver, som de i följande tabell:
| Bild | Kommentarer | 
|---|---|
| mcr.microsoft.com/dotnet/aspnet:8.0 | ASP.NET Core, med endast körning och ASP.NET Core-optimeringar, i Linux och Windows (flera valv) | 
| mcr.microsoft.com/dotnet/sdk:8.0 | .NET 8, med SDK:er inkluderade i Linux och Windows (flera valv) | 
Du hittar alla tillgängliga Docker-avbildningar i dotnet-docker och refererar även till de senaste förhandsversionerna med hjälp av nightly build mcr.microsoft.com/dotnet/nightly/*