Úvod k .NET a Dockeru
Kontejnery jsou jedním z nejoblíbenějších způsobů nasazení a hostování cloudových aplikací s nástroji, jako jsou Docker, Kubernetes a Podman. Mnoho vývojářů volí kontejnery, protože je jednoduché zabalit aplikaci se závislostmi a získat ji tak, aby se spolehlivě spouštěla na jakémkoli hostiteli kontejneru. Existuje rozsáhlá podpora pro používání .NET s kontejnery.
Docker poskytuje skvělý přehled kontejnerů. Docker Desktop: Community Edition je vhodný nástroj pro použití kontejnerů na vývojářském stolním počítači.
Image .NET
Oficiální image kontejnerů .NET se publikují do Registr artefaktů Microsoft a jsou zjistitelné v Docker Hubu. Existují image modulu runtime pro produkční image a image sdk pro sestavení kódu pro Linux (Alpine, Debian, Ubuntu, Mariner) a Windows. Další informace najdete v tématu Image kontejneru .NET.
Bitové kopie .NET se pravidelně aktualizují vždy, když se publikuje nová oprava .NET nebo při aktualizaci základní image operačního systému.
Image kontejneru jsou image kontejnerů Ubuntu s minimální sadou komponent vyžadovaných modulem runtime .NET. Tyto image jsou ~100 MB menší než běžné image Ubuntu a mají méně CVE , protože mají méně komponent. Konkrétně neobsahují správce prostředí ani balíčků, což výrazně zlepšuje profil zabezpečení. Zahrnují také uživatele bez kořenového adresáře a jsou nakonfigurovány s povoleným uživatelem.
Vytváření imagí kontejneru
Image kontejneru můžete sestavit pomocí souboru Dockerfile nebo spoléhat na sadu .NET SDK k vytvoření image. Ukázky vytváření imagí najdete v tématu dotnet/dotnet-docker a dotnet/sdk-container-builds.
Následující příklad ukazuje sestavení a spuštění image kontejneru v několika rychlých krocích (podporováno v .NET 8 a .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
je nová možnost pro vývojáře, kteří chtějí používat soubory Dockerfile.
Porty
Mapování portů je klíčovou součástí používání kontejnerů. Porty musí být publikovány mimo kontejner, aby mohly reagovat na externí webové požadavky. ASP.NET image kontejneru Core se v .NET 8 změnily tak, aby ve výchozím nastavení naslouchaly na portu 8080
. .NET 6 a 7 naslouchejte na portu 80
.
V předchozím příkladu se docker run
port 8000
hostitele mapuje na port 8080
kontejneru . Kubernetes funguje podobným způsobem.
Proměnné ASPNETCORE_HTTP_PORTS
prostředí a ASPNETCORE_URLS
, ASPNETCORE_HTTPS_PORTS
lze použít ke konfiguraci tohoto chování.
Uživatelé
Počínaje rozhraním .NET 8 zahrnují všechny image uživatele, který není root app
. Ve výchozím nastavení jsou obrázky se chytáky nakonfigurované s povoleným tímto uživatelem. Aplikace publikování jako funkce kontejneru .NET (znázorněná v části Vytváření imagí kontejnerů) také ve výchozím nastavení konfiguruje image s tímto uživatelem, který je povolený. Ve všech ostatních scénářích app
je možné uživatele nastavit ručně, například pomocí USER
instrukce Dockerfile . Pokud je image nakonfigurovaná tak app
, aby příkazy byly spuštěny jako root
, USER
pak lze instrukce použít k nastavení uživatele na root
.
Zůstaňte v obraze
Zprávy související s kontejnery se publikují do dotnet /dotnet-docker diskuzí a do kategorie "kontejnery" blogu .NET.
Služby Azure
Různé služby Azure podporují kontejnery. Vytvoříte pro svou aplikaci image Dockeru a nasadíte ji do jedné z následujících služeb:
Azure Kubernetes Service (AKS)
Škálování a orchestrace kontejnerů Windows a Linuxu pomocí KubernetesAzure App Service
Nasaďte webové aplikace nebo rozhraní API pomocí kontejnerů v prostředí PaaS.Azure Container Apps
Spusťte úlohy kontejnerů bez správy serverů, orchestrace nebo infrastruktury a využijte nativní podporu pro Dapr a KEDA pro pozorovatelnost a škálování na nulu.Azure Container Instances
Vytvářejte jednotlivé kontejnery v cloudu bez jakýchkoli služeb správy vyšší úrovně.Azure Batch
Spouštění opakujících se výpočetních úloh pomocí kontejnerůAzure Service Fabric
Lift, shift a modernizovat aplikace .NET na mikroslužby pomocí kontejnerů Windows a LinuxuAzure Container Registry
Ukládejte a spravujte image kontejnerů napříč všemi typy nasazení Azure.