Ennen .NET 8:aa kontit toimivat oletuksena juurina, ja .NET 8:sta alkaen kaikki Linux-konttikuvamme sisältävät ei-root-käyttäjiä. Voit isännöidä .NET-kontteja yhdellä koodirivillä ei-root-käyttäjänä. Tämä alustatason muutos tekee sovelluksestasi turvallisemman ja tekee .NET:stä yhden turvallisimmista kehittäjäekosysteemeistä. Tämä on pieni muutos, mutta sillä on suuri vaikutus puolustuksen syvällisyyteen.
Ymmärrä UID- ja GID-tiedostot Docker-kontteissa
Oletuksena kontin prosessi toimii juurikäyttäjäoikeuksilla, ja tämä juurikäyttäjä on sama käyttäjä kuin isäntäkoneen juuri. Eikö se kuulosta pelottavalta, koska se tarkoittaa, että kun prosessi kontissa saa oikean mahdollisuuden, se voi hallita kaikkea isäntäkoneessa!
Viittaus:Hyperlinkin kirjautuminen on näkyvissä.
.NET 8 Docker-kuva
.NET 8 Docker -kuvassa on kaksi pääasiallista muutosta:
- Image luo uuden sovellustilin ja ryhmän, ja ajaa sovelluksen oletuksena sovellustilillä
- Kun vaihdoin porttiin 8080, se osoittautui portiksi 80, koska portti 80 on etuoikeutettu, root-oikeudet ovat pakollisia (ainakin joissain kohdissa)
.NET Docker Image source code -osoite:Hyperlinkin kirjautuminen on näkyvissä.
Riippuvuudet ovat seuraavat:
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 näyttää tältä:
Kuten alla on esitetty:
Käytä sovellustiliä syöttääksesi peruskuvan, ja komento on seuraava:
Tulosta nykyiset käyttäjä- ja ympäristömuuttujat, kuten seuraavassa kuvassa on esitetty:
Viittaus:Hyperlinkin kirjautuminen on näkyvissä.
Dockerfile-tiedosto
Jos sinun täytyy paketoida projektisi Docker-kuvaksi, sinun täytyy luoda uusi .NET 8 Docker-konttituki, ja oletusasetukset Linux-ympäristössä Dockerfile-tiedoston asetukset ovat seuraavat:
Jos asetat järjestelmän aikavyöhykkeen Dockerfileen, seuraava koodi:
Luvan hylkäysvirhe voi ilmetä seuraavasti:
4>F:\itsvse\Dockerfile : error CTC1014: #21 [viimeinen 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: epäonnistui symbolisen linkin luomisessa '/etc/localtime': Lupa evätty 4>F:\itsvse\Dockerfile : error CTC1014: #21 ERROR: prosessi "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone" ei valmistunut onnistuneesti: exit code: 1 4>F:\itsvse\Dockerfile : virhe CTC1014: ------ 4>F:\itsvse\Dockerfile : error CTC1014: > [viimeinen 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: epäonnistui symbolisen linkin luomisessa '/etc/localtime': Lupa evätty Käytä juuritiliä aikavyöhykkeen asettamiseen, vaihda sitten takaisin sovellustiliin ja muokkaa sitä seuraavasti:
(Loppu)
|