Prieš .NET 8 konteineriai pagal numatytuosius nustatymus veikė kaip root, o pradedant nuo .NET 8, visuose mūsų Linux konteinerių atvaizduose bus ne root vartotojai. Galėsite talpinti .NET konteinerius su viena kodo eilute kaip ne root vartotojas. Šis platformos lygio pakeitimas padarys jūsų programą saugesnę ir .NET taps viena saugiausių kūrėjų ekosistemų. Tai nedidelis pokytis, tačiau jis turi didelę įtaką gynybai.
Supraskite UID ir GID "Docker" konteineriuose
Pagal numatytuosius nustatymus procesas konteineryje vykdomas su root vartotojo teisėmis, o šis root vartotojas yra tas pats vartotojas kaip ir root pagrindiniame kompiuteryje. Ar tai neskamba baisiai, nes tai reiškia, kad kai procesas konteineryje turi tinkamą galimybę, jis gali valdyti viską pagrindiniame kompiuteryje!
Nuoroda:Hipersaito prisijungimas matomas.
.NET 8 Docker vaizdas
Yra du pagrindiniai .NET 8 Docker vaizdo pakeitimai:
- Vaizdas sukuria naują programos paskyrą ir grupę ir pagal numatytuosius nustatymus paleidžia programą su programos paskyra
- Perjungus į 8080 prievadą, paaiškėjo, kad tai 80 prievadas, nes 80 prievadas yra privilegijuotas prievadas, reikalingos root teisės (bent jau kai kuriose vietose)
.NET Docker vaizdo šaltinio kodo adresas:Hipersaito prisijungimas matomas.
Priklausomybės yra šios:
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 atrodo taip:
Kaip parodyta žemiau:
Naudokite programos paskyrą, kad įvestumėte pagrindinį vaizdą, o komanda yra tokia:
Išveskite dabartinius vartotojo ir aplinkos kintamuosius, kaip parodyta šiame paveikslėlyje:
Nuoroda:Hipersaito prisijungimas matomas.
Dockerfile failas
Jei jums reikia supakuoti projektą į "Docker" vaizdą, turite sukurti naują .NET 8 Docker konteinerio palaikymą, o numatytoji "Linux" aplinka "Dockerfile" failo konfigūracija yra tokia:
Jei "Dockerfile" nustatysite sistemos laiko juostą, šis kodas:
Klaida Leidimas uždraustas gali įvykti taip:
4>F:\itsvse\Dockerfile: klaidos CTC1014: #21 [galutinis 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone 4>F:\itsvse\Dockerfile : klaida CTC1014: #21 0.314 ln: nepavyko sukurti simbolinės nuorodos '/etc/localtime': leidimas uždraustas 4>F:\itsvse\Dockerfile: klaida CTC1014: #21 KLAIDA: procesas "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone" nesėkmingai baigtas: išėjimo kodas: 1 4>F:\itsvse\Dockerfile: klaidos CTC1014: ------ 4>F:\itsvse\Dockerfile: klaidos CTC1014: > [galutinis 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone: 4>F:\itsvse\Dockerfile : klaida CTC1014: #21 0.314 ln: nepavyko sukurti simbolinės nuorodos '/etc/localtime': leidimas uždraustas Naudokite šakninę paskyrą, kad nustatytumėte laiko juostą, tada grįžkite į programos paskyrą ir pakeiskite ją taip:
(Pabaiga)
|