Úvod do .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, Kubernetesa 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 pomocí .NET s kontejnery.
Docker poskytuje skvělý přehled kontejnerů. Docker Desktop: Community Edition je vhodný nástroj pro používání kontejnerů na desktopovém počítači vývojáře.
Obrázky .NET
Oficiální kontejnerové image .NET se publikují do služby Microsoft Artifact Registry
Snímky .NET se pravidelně aktualizují vždy, když je vydána nová oprava .NET nebo při aktualizaci základní snímku operačního systému.
Ostré obrázky kontejnerů jsou obrázky kontejnerů Ubuntu s minimální sadou komponent požadovanou prostředím .NET runtime. 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é ne-root uživatele a jsou nakonfigurovány s tímto uživatelem povoleným.
Vytváření imagí kontejneru
Obraz kontejneru můžete sestavit pomocí souboru Dockerfile nebo spoléhat na .NET SDK k vytvoření obrazu. Podívejte se na ukázky vytváření obrázků v 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.
Přístavy
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 v rozhraní .NET 8 ve výchozím nastavení naslouchat na portu 8080
. .NET 6 a 7 naslouchají na portu 80
.
V předchozím příkladu s docker run
se port hostitele 8000
mapuje na port kontejneru 8080
. Kubernetes funguje podobným způsobem.
K konfiguraci tohoto chování lze použít proměnné prostředí ASPNETCORE_HTTP_PORTS
, ASPNETCORE_HTTPS_PORTS
a ASPNETCORE_URLS
.
Uživatelé
Počínaje rozhraním .NET 8 zahrnují všechny image uživatele, který se nazývá app
. Ve výchozím nastavení jsou precizně definované obrazy nakonfigurovány s tímto uživatelem povoleným. Funkce publikování aplikace jako kontejneru .NET (znázorněná v části Sestavení image kontejneru) také ve výchozím nastavení konfiguruje image s tímto uživatelem povoleným. Ve všech ostatních scénářích je možné uživatele app
nastavit ručně, například pomocí instrukce Dockerfile USER
. Pokud je image nakonfigurovaná s app
a příkazy musí běžet jako root
, pak USER
instrukce lze 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 kontejnerů .NET Blog.
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 & Linuxu pomocí KubernetesAzure App Service
Nasaďte webové aplikace nebo rozhraní API pomocí kontejnerů v prostředí PaaS.Azure Container Apps
Spouštějte ú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 & Linuxu.služby Azure Container Registry
Ukládání a správa imagí kontejnerů napříč všemi typy nasazení Azure