Prima di .NET 8, i container venivano eseguiti come root di default e, a partire da .NET 8, tutte le nostre immagini dei container Linux conterranno utenti non root. Potrai ospitare container .NET con una singola riga di codice come utente non root. Questo cambiamento a livello di piattaforma renderà la tua applicazione più sicura e renderà .NET uno degli ecosistemi per sviluppatori più sicuri. Si tratta di un piccolo cambiamento, ma ha un grande impatto sulla difesa in profondità.
Comprendere gli UID e i GID nei container Docker
Di default, il processo nel container funziona con i privilegi dell'utente root, e questo utente root è lo stesso utente della root nella macchina host. Non sembra spaventoso, perché significa che una volta che un processo in un contenitore ha la giusta possibilità, può controllare tutto sulla macchina ospitante!
Riferimento:Il login del link ipertestuale è visibile.
Immagine Docker di .NET 8
Ci sono due principali modifiche all'immagine Docker di .NET 8, come segue:
- Image crea un nuovo account e gruppo app, e gestisce l'app con l'account app di default
- Spostata alla porta 8080, si è rivelata essere la porta 80, poiché la porta 80 è una porta privilegiata, sono necessari privilegi root (almeno in alcuni luoghi)
Indirizzo del codice sorgente dell'immagine Docker .NET:Il login del link ipertestuale è visibile.
Le dipendenze sono le seguenti:
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 appare così:
Come mostrato di seguito:
Usa l'account app per inserire l'immagine di base, e il comando è il seguente:
Riproduce le variabili attuali dell'utente e dell'ambiente, come mostrato nella figura seguente:
Riferimento:Il login del link ipertestuale è visibile.
File Dockerfile
Se devi impacchettare il tuo progetto in un'immagine Docker, devi creare un nuovo supporto per container .NET 8 Docker, e la configurazione predefinita del file Dockerfile dell'ambiente Linux è la seguente:
Se imposti il fuso orario di sistema nel Dockerfile, il seguente codice:
L'errore di Permesso negato può verificarsi come segue:
4>F:\itsvse\Dockerfile : errore CTC1014: #21 [3/3 finale] RUN Ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/fuso orario 4>F:\itsvse\Dockerfile : errore CTC1014: #21 0.314 ln: non riuscito a creare un link simbolico '/etc/localtime': Permesso negato 4>F:\itsvse\Dockerfile : errore CTC1014: #21 ERRORE: il processo "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone" non ha completato con successo: codice di uscita: 1 4>F:\itsvse\Dockerfile : errore CTC1014: ------ 4>F:\itsvse\Dockerfile : errore CTC1014: > [3/3 finali] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/fuso orario: 4>F:\itsvse\Dockerfile : errore CTC1014: #21 0.314 ln: non riuscito a creare un link simbolico '/etc/localtime': Permesso negato Usa l'account root per impostare il fuso orario, poi torna all'account app e modificalo come segue:
(Fine)
|