A .NET és a Docker bemutatása

A tárolók a felhőalkalmazások üzembe helyezésének és üzemeltetésének egyik legnépszerűbb módja, olyan eszközökkel, mint a Docker, a Kubernetes és a Podman. Sok fejlesztő azért választ tárolókat, mert egyszerűen csomagolhat be egy alkalmazást a függőségeibe, és megbízhatóan futtathatja az alkalmazást bármely tároló gazdagépen. A .NET tárolókkal való használatához széles körű támogatás áll rendelkezésre.

A Docker nagyszerű áttekintést nyújt a tárolókról. A Docker Desktop: Community Edition egy jó eszköz tárolók fejlesztői asztali gépeken való használatához.

.NET-rendszerképek

A hivatalos .NET-tárolórendszerképek közzé vannak téve a Microsoft Eszközjegyzék, és a Docker Hubon találhatók. Vannak futtatókörnyezeti rendszerképek éles és SDK-lemezképekhez a kód készítéséhez, Linuxhoz (Alpine, Debian, Ubuntu, Mariner) és Windowshoz. További információ: .NET-tárolórendszerképek.

A .NET-rendszerképek rendszeresen frissülnek az új .NET-javítások közzétételekor vagy az operációs rendszer alaprendszerképének frissítésekor.

A vésett tárolólemezképek olyan Ubuntu tárolólemezképek, amelyekhez a .NET-futtatókörnyezet minimális összetevőkészlete szükséges. Ezek a képek ~100 MB-al kisebbek, mint a normál Ubuntu-képek, és kevesebb CVE-jük van, mivel kevesebb összetevőjük van. Különösen nem tartalmaznak rendszerhéjat vagy csomagkezelőt, ami jelentősen javítja a biztonsági profiljukat. Emellett egy nem gyökérfelhasználót is tartalmaznak, és úgy vannak konfigurálva, hogy a felhasználó engedélyezve legyen.

Tárolólemezképek létrehozása

Létrehozhat egy tárolórendszerképet Egy Docker-fájllal , vagy a .NET SDK-ra támaszkodva hozhat létre lemezképet. Képek készítésére vonatkozó mintákért lásd : dotnet/dotnet-docker és dotnet/sdk-container-builds.

Az alábbi példa néhány gyors lépésben szemlélteti a tárolórendszerképek készítését és futtatását (a .NET 8 és a .NET 7.0.300 támogatott).

$ 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 Ez egy új lehetőség a Dockerfile-okat használni kívánó fejlesztők számára.

Portok

A portleképezés a tárolók használatának kulcsfontosságú része. A portokat a tárolón kívül kell közzétenni a külső webes kérelmek megválaszolásához. ASP.NET .NET 8-ban a tároló alaprendszerképe alapértelmezés szerint módosult a port 8080figyeléséhez. .NET 6 és 7 figyel a porton 80.

Az előző példában docker runa gazdagépport 8000 a tárolóporthoz 8080van leképezve. A Kubernetes hasonló módon működik.

Ennek ASPNETCORE_HTTP_PORTSa viselkedésnek a konfigurálásához a , ASPNETCORE_HTTPS_PORTSés ASPNETCORE_URLS a környezeti változók használhatók.

Felhasználók

A .NET 8-tól kezdve minden rendszerkép tartalmaz egy nem gyökérfelhasználót.app Alapértelmezés szerint a vésett képek konfigurálva vannak ezzel a felhasználóval. A közzétételi alkalmazás .NET-tárolóként funkció (amelyet a Tárolólemezképek készítése szakaszban mutatunk be) a rendszerképek alapértelmezés szerint engedélyezve van ezzel a felhasználóval. Minden más esetben a app felhasználó manuálisan is beállítható, például a USERDockerfile utasítással. Ha egy rendszerkép konfigurálva app van, és a parancsokat a következőképpen rootkell futtatni, akkor az USER utasítással beállíthatja a felhasználót root.

Tájékoztatás

A tárolóval kapcsolatos hírek a dotnet/dotnet-docker vitafórumokban és a .NET Blog "containers" kategóriájában jelennek meg.

Azure-szolgáltatások

A különböző Azure-szolgáltatások támogatják a tárolókat. Hozzon létre egy Docker-lemezképet az alkalmazáshoz, és helyezze üzembe az alábbi szolgáltatások egyikén:

  • Azure Kubernetes Service (AKS)
    Windows > Linux-tárolók méretezése és vezénylése a Kubernetes használatával.

  • Azure App Service
    Webalkalmazások vagy API-k üzembe helyezése tárolók használatával PaaS-környezetben.

  • Azure Container Apps
    Futtassa a tároló számítási feladatait kiszolgálók, vezénylés vagy infrastruktúra kezelése nélkül, és használja ki a Dapr és a KEDA natív támogatását a megfigyelhetőség és a nullára való skálázás érdekében.

  • Azure Container Instances
    Hozzon létre egyéni tárolókat a felhőben magasabb szintű felügyeleti szolgáltatások nélkül.

  • Azure Batch
    Ismétlődő számítási feladatok futtatása tárolókkal.

  • Azure Service Fabric
    A .NET-alkalmazások emelése, áthelyezése és modernizálása mikroszolgáltatásokba Windows > Linux-tárolók használatával.

  • Azure Container Registry
    Tárolólemezképek tárolása és felügyelete az Azure-telepítések minden típusában.

Következő lépések