Officiële .NET Docker-installatiekopieën
Tip
Deze inhoud is een fragment uit het eBook, .NET Microservices Architecture for Containerized .NET Applications, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.
De officiële Docker-installatiekopieën van .NET zijn Docker-installatiekopieën die zijn gemaakt en geoptimaliseerd door Microsoft. Ze zijn openbaar beschikbaar op Microsoft-artefactregister. U kunt in de catalogus zoeken naar alle opslagplaatsen voor .NET-installatiekopieën, bijvoorbeeld .NET SDK-opslagplaatsen .
Elke opslagplaats kan meerdere installatiekopieën bevatten, afhankelijk van .NET-versies, en afhankelijk van het besturingssysteem en de versies (Linux Debian, Linux Alpine, Windows Nano Server, Windows Server Core, enzovoort). Opslagplaatsen voor installatiekopieën bieden uitgebreide tagging om u te helpen niet alleen een specifieke frameworkversie te selecteren, maar ook om een besturingssysteem (Linux-distributie of Windows-versie) te kiezen.
Optimalisaties van .NET- en Docker-installatiekopieën voor ontwikkeling versus productie
Bij het bouwen van Docker-installatiekopieën voor ontwikkelaars heeft Microsoft zich gericht op de volgende hoofdscenario's:
Afbeeldingen die worden gebruikt voor het ontwikkelen en bouwen van .NET-apps.
Afbeeldingen die worden gebruikt om .NET-apps uit te voeren .
Waarom meerdere afbeeldingen? Bij het ontwikkelen, bouwen en uitvoeren van containertoepassingen hebt u meestal verschillende prioriteiten. Door verschillende installatiekopieën voor deze afzonderlijke taken te bieden, helpt Microsoft bij het optimaliseren van de afzonderlijke processen voor het ontwikkelen, bouwen en implementeren van apps.
Tijdens de ontwikkeling en build
Wat belangrijk is tijdens de ontwikkeling, is hoe snel u wijzigingen kunt herhalen en de mogelijkheid om fouten in de wijzigingen op te sporen. De grootte van de afbeelding is niet zo belangrijk als de mogelijkheid om wijzigingen aan te brengen in uw code en de wijzigingen snel te bekijken. Sommige hulpprogramma's en 'build-agentcontainers', gebruiken de .NET-installatiekopieën (mcr.microsoft.com/dotnet/sdk:8.0) tijdens het ontwikkelen en bouwen. Wanneer u in een Docker-container bouwt, zijn de belangrijke aspecten de elementen die nodig zijn om uw app te compileren. Dit omvat de compiler en eventuele andere .NET-afhankelijkheden.
Een andere geweldige optie is ontwikkelingscontainers. Deze containers zijn vooraf gedefinieerde ontwikkelomgevingen die klaar zijn voor gebruik. U hoeft zich geen zorgen te maken over afhankelijkheden en configuraties. Ze zijn ook eenvoudig aan te passen om extra hulpprogramma's of afhankelijkheden op te nemen. Ontwikkelcontainers bieden een consistente en reproduceerbare installatie die eenvoudig te delen is met uw team. Ontwikkelcontainers voldoen aan de specificatie van de ontwikkelcontainer en veel populaire ontwikkelhulpprogramma's, waaronder Visual Studio Code en GitHub Codespaces, ondersteunen ze. De .NET dev-containers zijn gebaseerd op de .NET SDK-installatiekopieën en bevatten de .NET SDK, runtime en andere hulpprogramma's die u nodig hebt om .NET-toepassingen te ontwikkelen.
Waarom is dit type build-installatiekopie belangrijk? U implementeert deze installatiekopieën niet in productie. In plaats daarvan is het een installatiekopieën die u gebruikt om de inhoud te bouwen die u in een productieinstallatiekopieën plaatst. Deze installatiekopieën worden gebruikt in uw CI-omgeving (continue integratie) of buildomgeving wanneer u Docker-builds met meerdere fasen gebruikt.
In productie
Wat belangrijk is in productie is hoe snel u uw containers kunt implementeren en starten op basis van een .NET-installatiekopieën voor productie. Daarom is de installatiekopieën met alleen runtime op basis van mcr.microsoft.com/dotnet/aspnet:8.0 klein, zodat deze snel via het netwerk van uw Docker-register naar uw Docker-hosts kunnen reizen. De inhoud is klaar om te worden uitgevoerd, waardoor de snelste tijd is om de container te starten tot het verwerken van resultaten. In het Docker-model hoeft u geen compilatie uit C#-code uit te voeren, omdat u dotnet-build of dotnet-publicatie uitvoert wanneer u de buildcontainer gebruikt.
In deze geoptimaliseerde afbeelding plaatst u alleen de binaire bestanden en andere inhoud die nodig is om de toepassing uit te voeren. De inhoud die is gemaakt door dotnet publish
, bevat bijvoorbeeld alleen de gecompileerde binaire .NET-bestanden, afbeeldingen, .js en .css bestanden. Na verloop van tijd ziet u afbeeldingen die vooraf gestippelde pakketten bevatten (de compilatie van IL naar systeemeigen pakketten die tijdens runtime plaatsvinden).
Hoewel er meerdere versies van de .NET- en ASP.NET Core-installatiekopieën zijn, delen ze allemaal een of meer lagen, inclusief de basislaag. Daarom is de hoeveelheid schijfruimte die nodig is om een installatiekopieën op te slaan, klein; deze bestaat alleen uit de delta tussen uw aangepaste installatiekopieën en de basisinstallatiekopieën. Het resultaat is dat het snel is om de installatiekopie op te halen uit uw register.
Wanneer u de .NET-installatiekopieën op Microsoft-artefactregister verkent, vindt u meerdere versies van installatiekopieën die zijn geclassificeerd of gemarkeerd met tags. Met deze tags kunt u bepalen welke moet worden gebruikt, afhankelijk van de versie die u nodig hebt, zoals die in de volgende tabel:
Afbeelding | Opmerkingen |
---|---|
mcr.microsoft.com/dotnet/aspnet:8.0 | ASP.NET Core, met alleen runtime en ASP.NET Core-optimalisaties, op Linux en Windows (multi-arch) |
mcr.microsoft.com/dotnet/sdk:8.0 | .NET 8, inclusief SDK's, in Linux en Windows (multi-arch) |
U vindt alle beschikbare docker-installatiekopieën in dotnet-docker en verwijst ook naar de nieuwste preview-releases met behulp van nightly build mcr.microsoft.com/dotnet/nightly/*