Udostępnij za pośrednictwem


Oficjalne obrazy Docker w programie .NET

Napiwek

Ta zawartość jest fragmentem książki eBook, architektury mikrousług platformy .NET dla konteneryzowanych aplikacji platformy .NET dostępnych na platformie .NET Docs lub jako bezpłatnego pliku PDF, który można odczytać w trybie offline.

Architektura mikrousług platformy .NET dla konteneryzowanych aplikacji platformy .NET — miniatura książki eBook.

Oficjalne obrazy platformy Docker platformy .NET to obrazy platformy Docker utworzone i zoptymalizowane przez firmę Microsoft. Są one publicznie dostępne w Rejestr Artefaktów Microsoft. Możesz wyszukać w katalogu, aby znaleźć wszystkie repozytoria obrazów platformy .NET, na przykład repozytorium zestawu .NET SDK .

Każde repozytorium może zawierać wiele obrazów, w zależności od wersji platformy .NET i w zależności od systemu operacyjnego i wersji (Linux Debian, Linux Alpine, Windows Nano Server, Windows Server Core itd.). Repozytoria obrazów zapewniają rozbudowane tagowanie, aby ułatwić wybranie nie tylko określonej wersji platformy, ale także wybranie systemu operacyjnego (dystrybucja systemu Linux lub wersja systemu Windows).

Optymalizacje obrazów platformy .NET i platformy Docker na potrzeby programowania i produkcji

Podczas tworzenia obrazów platformy Docker dla deweloperów firma Microsoft koncentruje się na następujących głównych scenariuszach:

  • Obrazy używane do tworzenia i tworzenia aplikacji platformy .NET.

  • Obrazy używane do uruchamiania aplikacji platformy .NET.

Dlaczego wiele obrazów? Podczas tworzenia, kompilowania i uruchamiania konteneryzowanych aplikacji zwykle istnieją różne priorytety. Udostępniając różne obrazy dla tych oddzielnych zadań, firma Microsoft pomaga zoptymalizować oddzielne procesy tworzenia, kompilowania i wdrażania aplikacji.

Podczas opracowywania i kompilowanie

Podczas programowania ważne jest, jak szybko można iterować zmiany i możliwość debugowania zmian. Rozmiar obrazu nie jest tak ważny, jak możliwość wprowadzania zmian w kodzie i szybkiego wyświetlania zmian. Niektóre narzędzia i "kontenery agentów kompilacji" używają obrazu .NET programistycznego (mcr.microsoft.com/dotnet/sdk:8.0) podczas procesu programowania i kompilacji. Podczas kompilowania wewnątrz kontenera platformy Docker ważne są elementy potrzebne do skompilowania aplikacji. Obejmuje to kompilator i wszelkie inne zależności platformy .NET.

Innym doskonałym rozwiązaniem jest kontenery programistyczne. Te kontenery są wstępnie utworzonymi środowiskami projektowymi, które są gotowe do użycia — nie musisz martwić się o zależności i konfiguracje. Można je również łatwo dostosować, aby uwzględnić dodatkowe narzędzia lub zależności. Kontenery programowania zapewniają spójną i powtarzalną konfigurację, która jest łatwa do udostępnienia zespołowi. Kontenery programistyczne są zgodne ze specyfikacją kontenera deweloperskiego i wieloma popularnymi narzędziami deweloperskimi, takimi jak Visual Studio Code i GitHub Codespaces, obsługują je. Kontenery deweloperskie platformy .NET są oparte na obrazie zestawu .NET SDK i zawierają zestaw .NET SDK, środowisko uruchomieniowe i inne narzędzia potrzebne do tworzenia aplikacji platformy .NET.

Dlaczego ten typ obrazu kompilacji jest ważny? Nie wdrażasz tego obrazu w środowisku produkcyjnym. Zamiast tego jest to obraz używany do kompilowania zawartości, którą umieszczasz w obrazie produkcyjnym. Ten obraz będzie używany w środowisku ciągłej integracji lub środowisku kompilacji podczas korzystania z kompilacji wieloetapowych platformy Docker.

W produkcji

Co jest ważne w środowisku produkcyjnym, to jak szybko można wdrożyć i uruchomić kontenery na podstawie produkcyjnego obrazu platformy .NET. W związku z tym obraz tylko dla środowiska uruchomieniowego oparty na mcr.microsoft.com/dotnet/aspnet:8.0 jest mały, aby umożliwić szybkie przechodzenie przez sieć z rejestru platformy Docker do hostów platformy Docker. Zawartość jest gotowa do uruchomienia, umożliwiając najszybszy czas od uruchomienia kontenera do przetwarzania wyników. W modelu platformy Docker nie ma potrzeby kompilowania z poziomu kodu języka C#, ponieważ podczas uruchamiania kompilacji dotnet lub publikowania dotnet podczas korzystania z kontenera kompilacji.

W tym zoptymalizowanym obrazie umieścisz tylko pliki binarne i inną zawartość wymaganą do uruchomienia aplikacji. Na przykład zawartość utworzona przez program dotnet publish zawiera tylko skompilowane pliki binarne platformy .NET, obrazy, .js i pliki .css. W czasie zobaczysz obrazy, które zawierają wstępnie jitted (kompilacja z IL do natywnego, który występuje w czasie wykonywania) pakietów.

Chociaż istnieje wiele wersji obrazów platformy .NET i ASP.NET Core, wszystkie współużytkują co najmniej jedną warstwę, w tym warstwę podstawową. W związku z tym ilość miejsca na dysku potrzebnego do przechowywania obrazu jest mała; składa się tylko z różnicy między obrazem niestandardowym a jego obrazem podstawowym. Wynikiem jest szybkie ściąganie obrazu z rejestru.

Podczas eksplorowania repozytoriów obrazów platformy .NET na Rejestr Artefaktów Microsoft znajdziesz wiele wersji obrazów sklasyfikowanych lub oznaczonych tagami. Te tagi pomagają zdecydować, który z nich ma być używany, w zależności od potrzebnej wersji, podobnie jak w poniższej tabeli:

Obraz Komentarze
mcr.microsoft.com/dotnet/aspnet:8.0 ASP.NET Core z optymalizacjami tylko środowiska uruchomieniowego i ASP.NET Core w systemach Linux i Windows (wiele łuków)
mcr.microsoft.com/dotnet/sdk:8.0 .NET 8 z dołączonymi zestawami SDK w systemach Linux i Windows (multi-arch)

Wszystkie dostępne obrazy platformy Docker można znaleźć w witrynie dotnet-docker , a także zapoznać się z najnowszymi wersjami zapoznawczymi przy użyciu nocnej kompilacji mcr.microsoft.com/dotnet/nightly/*