Kontenery to jeden z najpopularniejszych sposobów wdrażania i hostowania aplikacji w chmurze z narzędziami takimi jak Docker, Kubernetes i Podman. Wielu deweloperów wybiera kontenery, ponieważ łatwo spakować aplikację z jej zależnościami i uzyskać ją, aby niezawodnie była uruchamiana na dowolnym hoście kontenera. Istnieje obszerna obsługa korzystania z platformy .NET z kontenerami.
Platforma Docker oferuje doskonałe omówienie kontenerów. Docker Desktop: Community Edition to dobre narzędzie do używania kontenerów na komputerze stacjonarnym dewelopera.
Obrazy platformy .NET są regularnie aktualizowane po opublikowaniu nowej poprawki .NET lub zaktualizowaniu obrazu podstawowego systemu operacyjnego.
Obrazy kontenerów z systemem Ubuntu to obrazy kontenerów z minimalnym zestawem składników wymaganych przez środowisko uruchomieniowe platformy .NET. Te obrazy są o 100 MB mniejsze niż zwykłe obrazy systemu Ubuntu i mają mniej CVE, ponieważ mają mniej składników. W szczególności nie zawierają powłoki ani menedżera pakietów, co znacznie poprawia ich profil zabezpieczeń. Obejmują one również użytkownika innego niż główny i są skonfigurowane z włączonym tym użytkownikiem.
W poniższym przykładzie pokazano kompilowanie i uruchamianie obrazu kontenera w kilku szybkich krokach (obsługiwanych w programach .NET 8 i .NET 7.0.300).
$ dotnet new webapp -o webapp
$ cd webapp/
$ dotnet publish -t:PublishContainer
MSBuild version 17.8.3+195e7f5a3 for .NET
Determining projects to restore...
All projects are up-to-date for restore.
webapp -> /home/rich/webapp/bin/Release/net8.0/webapp.dll
webapp -> /home/rich/webapp/bin/Release/net8.0/publish/
Building image 'webapp' with tags 'latest' on top of base image 'mcr.microsoft.com/dotnet/aspnet:8.0'.
Pushed image 'webapp:latest' to local registry via 'docker'.
$ docker run --rm -d -p 8000:8080 webapp
7c7ad33409e52ddd3a9d330902acdd49845ca4575e39a6494952b642e584016e
$ curl -s http://localhost:8000 | grep ASP.NET
<p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c7ad33409e5 webapp "dotnet webapp.dll" About a minute ago Up About a minute 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp jovial_shtern
$ docker kill 7c7ad33409e5
docker init to nowa opcja dla deweloperów, którzy chcą używać plików Dockerfile.
Porty
Mapowanie portów jest kluczową częścią używania kontenerów. Porty muszą być publikowane poza kontenerem, aby reagować na zewnętrzne żądania internetowe. ASP.NET Core obrazy kontenerów zmienione na platformie .NET 8 domyślnie nasłuchują na porcie 8080. Nasłuchuje na porcie 80.NET 6 i 7.
W poprzednim przykładzie za pomocą docker runpolecenia port 8000 hosta jest mapowany na port 8080kontenera . Platforma Kubernetes działa w podobny sposób.
Zmienne ASPNETCORE_HTTP_PORTSśrodowiskowe , ASPNETCORE_HTTPS_PORTSi ASPNETCORE_URLS mogą służyć do konfigurowania tego zachowania.
Użytkownicy
Począwszy od platformy .NET 8, wszystkie obrazy zawierają użytkownika innego niż główny o nazwie app. Domyślnie obrazy rozdrobnione są skonfigurowane z włączonym tym użytkownikiem. Funkcja publikowania aplikacji jako kontenera platformy .NET (pokazana w sekcji Tworzenie obrazów kontenerów ) również domyślnie konfiguruje obrazy z włączonym tym użytkownikiem. We wszystkich innych scenariuszach app użytkownik można ustawić ręcznie, na przykład za USERpomocą instrukcji Dockerfile . Jeśli obraz został skonfigurowany za pomocą app polecenia i należy uruchomić polecenie jako root, USER można użyć instrukcji , aby ustawić użytkownikowi rootwartość .
Bądź na bieżąco
Wiadomości związane z kontenerem są publikowane w dyskusjach dotnet/dotnet-docker oraz w kategorii "kontenery" bloga platformy .NET.
Usługi platformy Azure
Różne usługi platformy Azure obsługują kontenery. Utworzysz obraz platformy Docker dla aplikacji i wdrożysz go w jednej z następujących usług:
Azure Kubernetes Service (AKS)
Skalowanie i organizowanie kontenerów systemu Windows i Linux przy użyciu platformy Kubernetes.
Azure App Service
Wdrażanie aplikacji internetowych lub interfejsów API przy użyciu kontenerów w środowisku PaaS.
Azure Container Apps
Uruchamianie obciążeń kontenerów bez zarządzania serwerami, orkiestracją lub infrastrukturą oraz korzystanie z natywnej obsługi dapr i KEDA w celu obserwowania i skalowania do zera.
Azure Container Instances
Tworzenie pojedynczych kontenerów w chmurze bez żadnych usług zarządzania wyższego poziomu.
Azure Batch
Uruchamianie powtarzających się zadań obliczeniowych przy użyciu kontenerów.
Azure Service Fabric
Lift, shift i modernizuj aplikacje .NET do mikrousług przy użyciu kontenerów systemu Windows i Linux.
Azure Container Registry
Przechowuj obrazy kontenerów i zarządzaj nimi w różnych typach wdrożeń platformy Azure.
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię:
Używanie platformy Docker do kompilowania i przechowywania prywatnych obrazów kontenerów oraz zarządzania nimi za pomocą usługi Azure Container Registry.
Build end-to-end solutions in Microsoft Azure to create Azure Functions, implement and manage web apps, develop solutions utilizing Azure storage, and more.