Pred .NET 8 so kontejnerji privzeto delovali kot root, in od .NET 8 naprej bodo vse naše Linux slike vsebnikov vsebovale ne-root uporabnike. Kot ne-root uporabnik boste lahko gostili .NET kontejnerje z eno vrstico kode. Ta sprememba na ravni platforme bo vašo aplikacijo naredila bolj varno in .NET naredila za enega najbolj varnih razvojnih ekosistemov. To je majhna sprememba, a močno vpliva na globino obrambe.
Razumite UID-je in GID-je v Docker kontejnerjih
Privzeto proces v kontejnerju teče z root uporabniškimi pravicami, ta root uporabnik pa je isti uporabnik kot root v gostiteljskem računalniku. Ali ne zveni strašljivo, saj pomeni, da ko ima proces v kontejnerju pravo priložnost, lahko nadzoruje vse na gostiteljskem računalniku!
Referenčni:Prijava do hiperpovezave je vidna.
.NET 8 Docker slika
Obstajata dve glavni spremembi na .NET 8 Docker sliki, in sicer:
- Image ustvari nov račun aplikacije in skupino ter aplikacijo privzeto zažene z aplikacijskim računom
- Ko sem preklopil na port 8080, se je izkazalo, da je port 80, ker je port 80 privilegiran, so root privilegije potrebne (vsaj na nekaterih mestih)
Naslov izvorne kode slike .NET Docker:Prijava do hiperpovezave je vidna.
Odvisnosti so naslednje:
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 izgleda takole:
Kot je prikazano spodaj:
Uporabite aplikacijski račun za vnos osnovne slike, ukaz pa je naslednji:
Izpišite trenutne uporabniške in okoljske spremenljivke, kot je prikazano na naslednji sliki:
Referenčni:Prijava do hiperpovezave je vidna.
Dockerfile datoteka
Če morate svoj projekt zapakirati v Docker sliko, morate ustvariti novo podporo za .NET 8 Docker kontejner, privzeta konfiguracija datotek Dockerfile v Linux okolju pa je naslednja:
Če v Dockerfile nastavite sistemski časovni pas, naslednjo kodo:
Napaka 'Dovoljenje zavrnjeno' se lahko pojavi na naslednji način:
4>F:\itsvse\Dockerfile : napaka CTC1014: #21 [končni 3/3] ZAŽENI ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime & echo Asia/Shanghai > /etc/timezone 4>F:\itsvse\Dockerfile : napaka CTC1014: #21 0.314 ln: ni uspelo ustvariti simbolične povezave '/etc/localtime': Dovoljenje zavrnjeno 4>F:\itsvse\Dockerfile : napaka CTC1014: #21 NAPAKA: proces "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime & echo $TZ > /etc/timezone" ni uspešno izveden: izhodna koda: 1 4>F:\itsvse\Dockerfile : napaka CTC1014: ------ 4>F:\itsvse\Dockerfile : napaka CTC1014: > [zadnji 3/3] ZAŽENI ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime & echo Asia/Shanghai > /etc/timezone: 4>F:\itsvse\Dockerfile : napaka CTC1014: #21 0.314 ln: ni uspelo ustvariti simbolične povezave '/etc/localtime': Dovoljenje zavrnjeno Uporabite root račun za nastavitev časovnega pasu, nato se vrnite v aplikacijski račun in ga spremenite takole:
(Konec)
|