A .NET 8 tárolóinak újdonságai
Ez a cikk a .NET 8 tárolóinak új funkcióit ismerteti.
Tárolólemezképek
A .NET 8.NET-tárolórendszerképek esetében a következő módosítások történtek:
- Nem gyökérfelhasználó
- Debian 12
- Vésett Ubuntu-képek
- Többplatformos tárolórendszerképek létrehozása
- összetett képek ASP.NET
Nem gyökérfelhasználó
A képek között egy non-root
felhasználó is szerepel. Ez a felhasználó képessé teszi a képeket non-root
. A futtatáshoz non-root
adja hozzá a következő sort a Dockerfile végén (vagy egy hasonló utasítást a Kubernetes-jegyzékekben):
USER app
A .NET 8 hozzáad egy környezeti változót a felhasználó UID-éhez non-root
, amely 64198. Ez a környezeti változó a Kubernetes-teszthez runAsNonRoot
hasznos, amelyhez a tárolófelhasználót nem név, hanem UID használatával kell beállítani. Ez a dockerfile egy példahasználatot mutat be.
Az alapértelmezett port is portról portra 80
8080
változott. A módosítás támogatásához egy új környezeti változó ASPNETCORE_HTTP_PORTS
érhető el, amely megkönnyíti a portok módosítását. A változó elfogadja a portok listáját, amely egyszerűbb, mint a szükséges ASPNETCORE_URLS
formátum. Ha ezen változók egyikével visszaállítja a portot portra 80
, nem futtatható a következőként non-root
: .
További információ: Alapértelmezett ASP.NET Core-port 80-ról 8080-ra módosult, és Új, nem gyökérszintű "alkalmazás" felhasználó Linux-rendszerképekben.
Debian 12
A tárolórendszerképek most a Debian 12 -t (Bookworm) használják. A Debian az alapértelmezett Linux-disztribúció a .NET-tárolólemezképekben.
További információkért lásd a Debian 12-re frissített Debian tárolórendszerképeket.
Vésett Ubuntu-képek
A vésett Ubuntu-képek a .NET 8-hoz érhetők el. A vésett képek felülete csökkent, mert rendkívül kicsik, nincs csomagkezelőjük vagy rendszerhéjuk, és azok non-root
. Ez a képtípus olyan fejlesztők számára készült, akik a berendezés-stílusú számítástechnika előnyeit szeretnék kihasználni.
A vésett képek alapértelmezés szerint nem támogatják a globalizációt. extra
képeket is biztosítanak, amelyek tartalmazzák a csomagokat és tzdata
a csomagokaticu
.
További információ a globalizációról és a tárolókról: Globalization Test App.
Többplatformos tárolórendszerképek létrehozása
A Docker támogatja a több környezetben működő többplatformos rendszerképek használatát és készítését. A .NET 8 egy új mintát vezet be, amely lehetővé teszi az architektúrák és a buildelt .NET-rendszerképek kombinációját és egyezését. Ha például macOS-t használ, és egy x64-alapú felhőszolgáltatást szeretne megcélzni az Azure-ban, a következő kapcsolóval hozhatja létre a --platform
rendszerképet:
docker build --pull -t app --platform linux/amd64
A .NET SDK mostantól támogatja $TARGETARCH
az értékeket és a -a
visszaállítás argumentumát. A következő kódrészlet egy példát mutat be:
RUN dotnet restore -a $TARGETARCH
# Copy everything else and build app.
COPY aspnetapp/. .
RUN dotnet publish -a $TARGETARCH --self-contained false --no-restore -o /app
További információ: A többplatformos tárolók támogatásának javítása blogbejegyzés.
összetett képek ASP.NET
A tárolók teljesítményének javítása érdekében új ASP.NET Docker-rendszerképek érhetők el, amelyek a futtatókörnyezet összetett verziójával rendelkeznek. Ez az összetettség úgy készült, hogy több MSIL-szerelvényt egyetlen használatra kész (R2R) kimeneti bináris fájlba állít össze. Mivel ezek a szerelvények egyetlen képbe vannak ágyazva, a jitting kevesebb időt vesz igénybe, és az alkalmazások indítási teljesítménye javul. Az összetett kép másik nagy előnye a normál ASP.NET képpel szemben, hogy az összetett lemezképek mérete kisebb a lemezen.
Van egy figyelmeztetés, hogy tisztában kell lennie. Mivel az összetettek több szerelvényt is beágyaznak egybe, szorosabb verziókapcsolóval rendelkeznek. Az alkalmazások nem használhatják a keretrendszer vagy ASP.NET bináris fájlok egyéni verzióit.
Összetett képek érhetők el az Alpine Linux, az Ubuntu ("jammy") vésett és a Mariner Distroless platformokhoz az mcr.microsoft.com/dotnet/aspnet
adattárból. A címkék az -composite
ASP.NET Docker-oldalon lévő utótaggal együtt jelennek meg.
Tároló közzététele
- Generált kép alapértelmezései
- Teljesítmény és kompatibilitás
- Hitelesítés
- Közzététel tar.gz archívumban
Generált kép alapértelmezései
dotnet publish
tárolólemezképeket hozhat létre. Alapértelmezés szerint képeket non-root
készít, így az alkalmazások alapértelmezés szerint biztonságban maradhatnak. Ezt az alapértelmezett beállítást bármikor módosíthatja a ContainerUser
megfelelő beállítással, például a következővel root
: .
Az alapértelmezett kimeneti tárolócímke most.latest
Ez az alapértelmezett beállítás összhangban van a tárolók területén található egyéb eszközökkel, és megkönnyíti a tárolók használatát a belső fejlesztési ciklusokban.
Teljesítmény és kompatibilitás
A .NET 8 jobb teljesítményt nyújt a tárolók távoli regisztrációs adatbázisokba, különösen az Azure-regisztrációs adatbázisokba való leküldéséhez. A gyorsítás a rétegek egyetlen műveletben való leküldéséből ered, és az atomi feltöltéseket nem támogató regisztrációs adatbázisok esetében egy megbízhatóbb adattömbelési mechanizmus.
Ezek a fejlesztések azt is jelentik, hogy több adatbázis támogatott: Harbor, Artifactory, Quay.io és Podman.
Hitelesítés
A .NET 8 támogatja az OAuth-jogkivonatok exchange-hitelesítését (Azure Managed Identity), amikor tárolókat küld a regisztrációs adatbázisokba. Ez a támogatás azt jelenti, hogy mostantól hitelesítési hibák nélkül küldhet le olyan adatbázisokat, mint az Azure Container Registry. Az alábbi parancsok egy példa közzétételi folyamatot mutatnak be:
> az acr login -n <your registry name>
> dotnet publish -r linux-x64 -p PublishProfile=DefaultContainer
A .NET-alkalmazások tárolózásával kapcsolatos további információkért lásd : .NET-alkalmazások tárolóba helyezése dotnet-közzététellel.
Közzététel tar.gz archívumban
A .NET 8-tól kezdve közvetlenül tar.gz archívumként hozhat létre tárolókat. Ez a funkció akkor hasznos, ha a munkafolyamat nem egyszerű, és például leküldés előtt le kell futtatnia egy ellenőrzőeszközt a képeken. Az archívum létrehozása után áthelyezheti, átvizsgálhatja vagy betöltheti egy helyi Docker-eszközláncba.
Az archívumban való közzétételhez adja hozzá a tulajdonságot a ContainerArchiveOutputPath
dotnet publish
parancshoz, például:
dotnet publish \
-p PublishProfile=DefaultContainer \
-p ContainerArchiveOutputPath=./images/sdk-container-demo.tar.gz
Megadhat egy mappanevet vagy egy adott fájlnévvel rendelkező elérési utat.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: