Antes do .NET 8, os containers rodavam como root por padrão, e a partir do .NET 8, todas as nossas imagens de contêineres Linux conterão usuários não root. Você poderá hospedar contêineres .NET com uma única linha de código como usuário não root. Essa mudança em nível de plataforma tornará sua aplicação mais segura e fará do .NET um dos ecossistemas de desenvolvedores mais seguros. Essa é uma mudança pequena, mas tem grande impacto na defesa em profundidade.
Entenda os UIDs e GIDs em contêineres Docker
Por padrão, o processo no contêiner roda com privilégios de usuário root, e esse usuário root é o mesmo usuário root da máquina hospedeira. Isso não parece assustador, porque significa que, uma vez que um processo em um container tem a chance certa, ele pode controlar tudo na máquina hospedeira!
Referência:O login do hiperlink está visível.
Imagem Docker .NET 8
Existem duas mudanças principais na imagem do Docker do .NET 8, conforme segue:
- O Image cria uma nova conta e grupo de aplicativos, e roda o app com a conta do app por padrão
- Mudado para a porta 8080, acabou sendo a porta 80, já que a porta 80 é privilegiada, privilégios de raiz são necessários (pelo menos em alguns lugares)
Endereço do código-fonte da imagem Docker .NET:O login do hiperlink está visível.
As dependências são as seguintes:
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 é assim:
Como mostrado abaixo:
Use a conta do app para inserir a imagem básica, e o comando é o seguinte:
Produza as variáveis atuais do usuário e do ambiente, conforme mostrado na figura a seguir:
Referência:O login do hiperlink está visível.
Arquivo Dockerfile
Se você precisar empacotar seu projeto em uma imagem Docker, é necessário criar um novo suporte para contêineres .NET 8 Docker, e a configuração padrão do arquivo Dockerfile no ambiente Linux é a seguinte:
Se você definir o fuso horário do sistema no Dockerfile, o seguinte código:
O erro de Permissão Negada pode ocorrer da seguinte forma:
4>F:\itsvse\Dockerfile : erro CTC1014: #21 [final 3/3] EXECUTE LN -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/fuso horário 4>F:\itsvse\Dockerfile : erro CTC1014: #21 0.314 ln: não foi possível criar o link simbólico '/etc/localtime': Permissão negada 4>F:\itsvse\Dockerfile : erro CTC1014: #21 ERRO: o processo "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone" não foi concluído com sucesso: código de saída: 1 4>F:\itsvse\Dockerfile : erro CTC1014: ------ 4>F:\itsvse\Dockerfile : erro CTC1014: > [3/3 final] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/fuso horário: 4>F:\itsvse\Dockerfile : erro CTC1014: #21 0.314 ln: não foi possível criar o link simbólico '/etc/localtime': Permissão negada Use a conta raiz para definir o fuso horário, depois volte para a conta do app e modifique da seguinte forma:
(Fim)
|