A .NET 8 előtt a konténerek alapértelmezés szerint root formátumban futottak, és a .NET 8-tól kezdve minden Linux konténer képünk nem root felhasználókat tartalmaz. Nem root felhasználóként egyetlen kódsorral .NET konténereket lehet üzemeltetni. Ez a platformszintű változás biztonságosabbá teszi az alkalmazásodat, és a .NET-et az egyik legbiztonságosabb fejlesztői ökoszisztémává teszi. Ez apró változás, de nagy hatással van a védelem mélységére.
Ismerd meg a Docker konténerek UID-jeit és GID-jeit
Alapértelmezés szerint a konténerben lévő folyamat root felhasználói jogosultságokkal fut, és ez a root felhasználó ugyanaz a felhasználó, mint a gazdagép gyökere. Nem hangzik ez ijesztően, mert azt jelenti, hogy ha egy folyamatnak egy tartályban megvan a megfelelő esélye, mindent irányíthat a gazdagépen!
Utalás:A hiperlink bejelentkezés látható.
.NET 8 Docker kép
Két fő változás van a .NET 8 Docker képen, az alábbiakban:
- Az Image létrehoz egy új alkalmazásfiókot és csoportot, és alapértelmezetten futtatja az alkalmazást az alkalmazásfiókkal
- Átváltva a 8080-as portra, kiderült, hogy 80-as port, mivel a 80-as port kiváltságos port, root jogosultságokra (legalábbis bizonyos helyeken) szükség van
.NET Docker kép forráskód cím:A hiperlink bejelentkezés látható.
A függőségek a következők:
aspnet:8.0-bookworm-slim -> dotnet/runtime-8.0.0-bookworm-slim-amd64 -> dotnet/runtime-deps-8.0.0-bookworm-slim-amd64 -> amd64/debian:bookworm-slim
dotnet/runtime-deps-8.0.0-bookworm-slim-amd64 így néz ki:
Ahogy az alábbiakban látható:
Az alkalmazás fiókkal írd be az alapképet, és a parancs a következő:
A jelenlegi felhasználói és környezeti változók kimenete, ahogy az alábbi ábrán látható:
Utalás:A hiperlink bejelentkezés látható.
Dockerfile fájl
Ha a projektedet Docker képbe kell csomagolnod, új .NET 8 Docker konténer támogatást kell létrehoznod, és az alapértelmezett Linux környezet Dockerfile fájlkonfigurációja a következő:
Ha beállítod a rendszer időzónáját a Dockerfile-ben, a következő kódot írjuk:
Az engedély megtagadása hiba a következőképpen jelentkezhet:
4>F:\itsvse\Dockerfile : error CTC1014: #21 [végső 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone 4>F:\itsvse\Dockerfile : error CTC1014: #21 0.314 ln: nem sikerült létrehozni szimbolikus linket '/etc/localtime': Engedély megtagadva 4>F:\itsvse\Dockerfile : error CTC1014: #21 ERROR: process "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone" nem sikeresen teljesített: exit code: 1 4>F:\itsvse\Dockerfile : hiba CTC1014: ------ 4>F:\itsvse\Dockerfile : error CTC1014: > [végső 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone: 4>F:\itsvse\Dockerfile : error CTC1014: #21 0.314 ln: nem sikerült létrehozni szimbolikus linket '/etc/localtime': Engedély megtagadva Használd a root fiókot az időzóna beállításához, majd válts vissza az alkalmazásfiókra, és módosítsd azt a következőként:
(Vége)
|