Pred .NET 8 kontajnery bežali štandardne ako root a od .NET 8 budú všetky naše Linux obrazy kontajnerov obsahovať ne-root používateľov. Ako ne-root používateľ budete môcť hostovať .NET kontajnery s jedným riadkom kódu. Táto zmena na úrovni platformy zvýši bezpečnosť vašej aplikácie a urobí z .NET jeden z najbezpečnejších vývojárskych ekosystémov. Je to malá zmena, ale má veľký vplyv na hĺbku obrany.
Pochopte UID a GID v Docker kontajneroch
Predvolene proces v kontajneri beží s root používateľskými oprávneniami a tento root používateľ je ten istý používateľ ako root v hostiteľskom stroji. Neznie to desivo, pretože to znamená, že keď má proces v kontajneri správnu šancu, môže ovládať všetko na hostiteľskom stroji!
Referencia:Prihlásenie na hypertextový odkaz je viditeľné.
.NET 8 Docker obraz
Existujú dve hlavné zmeny v obraze .NET 8 Dockeru, a to nasledovne:
- Image vytvorí nový aplikačný účet a skupinu a spustí aplikáciu s týmto účtom ako predvolený
- Keď som prešiel na port 8080, ukázalo sa, že to bol port 80, keďže port 80 je privilegovaný port, root oprávnenia sú potrebné (aspoň na niektorých miestach)
Adresa zdrojového kódu obrázka .NET Docker:Prihlásenie na hypertextový odkaz je viditeľné.
Závislosti sú nasledovné:
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 vyzerá takto:
Ako je uvedené nižšie:
Použite aplikačný účet na zadanie základného obrázka a príkaz je nasledovný:
Výstup aktuálnych používateľských a environmentálnych premenných, ako je znázornené na nasledujúcom obrázku:
Referencia:Prihlásenie na hypertextový odkaz je viditeľné.
Dockerfile súbor
Ak potrebujete zabaliť svoj projekt do Docker obrazu, musíte vytvoriť novú .NET 8 Docker kontajnerovú podporu a predvolená konfigurácia súboru Dockerfile v Linux prostredí je nasledovná:
Ak nastavíte systémové časové pásmo v Dockerfile, nasleduje kód:
Chyba Povolenie zamietnuté môže nastať nasledovne:
4>F:\itsvse\Dockerfile : chyba CTC1014: #21 [finálny 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime & echo Asia/Shanghai > etc/timezone 4>F:\itsvse\Dockerfile : chyba CTC1014: #21 0.314 ln: nepodarilo sa vytvoriť symbolický odkaz '/etc/localtime': Povolenie zamietnuté 4>F:\itsvse\Dockerfile : chyba CTC1014: #21 CHYBA: proces "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime & echo $TZ > /etc/timezone" nebol úspešne dokončený: exit code: 1 4>F:\itsvse\Dockerfile : chyba CTC1014: ------ 4>F:\itsvse\Dockerfile : chyba CTC1014: > [finálny 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime & echo Asia/Shanghai > /etc/timezone: 4>F:\itsvse\Dockerfile : chyba CTC1014: #21 0.314 ln: nepodarilo sa vytvoriť symbolický odkaz '/etc/localtime': Povolenie zamietnuté Použite root účet na nastavenie časového pásma, potom sa vráťte k aplikačnému účtu a upravte ho nasledovne:
(Koniec)
|