Sign inSign up

lzocateli/dotnet-sdk

By lzocateli

•Updated about 1 month ago

Image
0

1.1K

lzocateli/dotnet-sdk repository overview

⁠.NET 10 SDK

Docker Hub Version Base Platforms Repository code license Build

Imagem do .NET 10 SDK para compilação, testes e publicação de aplicações em pipelines de contêineres. Acrescenta ferramentas de diagnóstico de rede à imagem oficial; aplicações produzidas devem usar uma imagem de runtime, como lzocateli/dotnet-aspnet, no estágio final.

⁠Referência da imagem

ItemValor
Imagemlzocateli/dotnet-sdk:10.0.400-noble
Imagem baseDigest do manifest multi-arquitetura de mcr.microsoft.com/dotnet/sdk:10.0-noble
Plataformaslinux/amd64, linux/arm64
Usuário padrão1654:1654 (APP_UID da imagem oficial)
Comando padrãodotnet --info
Diretório de trabalho/workspace
Código-fontehttps://github.com/lzocateli/containers/tree/main/dotnet-sdk
Documentaçãohttps://github.com/lzocateli/containers/tree/main/dotnet-sdk

⁠Conteúdo e finalidade

⁠Incluído
  • .NET SDK 10.0.400 e os runtimes fornecidos pela imagem oficial Microsoft;
  • curl, iputils-ping, libxml2-dev, net-tools e telnet instalados dos repositórios Ubuntu Noble;
  • diretório /workspace gravável pelo usuário não root.
⁠Não incluído
  • daemon ou cliente Docker;
  • Node.js, PowerShell e ferramentas globais dotnet;
  • credenciais de feeds NuGet, certificados privados ou código-fonte;
  • aplicação ou runtime final de produção.

⁠Início rápido

docker pull lzocateli/dotnet-sdk:10.0.400-noble
docker run --rm lzocateli/dotnet-sdk:10.0.400-noble

Para compilar um projeto no diretório atual:

docker run --rm \
  --volume "$PWD:/workspace" \
  lzocateli/dotnet-sdk:10.0.400-noble \
  dotnet publish --configuration Release --output /workspace/out

O diretório montado deve permitir escrita pelo UID 1654. Não monte o socket Docker nem execute como root sem necessidade explícita.

⁠Docker Compose

services:
  build:
    image: lzocateli/dotnet-sdk:10.0.400-noble
    user: "1654:1654"
    working_dir: /workspace
    volumes:
      - ./:/workspace
    command: ["dotnet", "publish", "--configuration", "Release", "--output", "/workspace/out"]

⁠Configuração

As variáveis DOTNET_*, NUGET_* e o comportamento do CLI seguem a imagem oficial. Não há variável própria obrigatória, porta exposta, volume declarado ou health check. Forneça tokens NuGet como secret do BuildKit ou do orquestrador, nunca por ARG, ENV no Dockerfile ou arquivo versionado.

⁠Inicialização e ciclo de vida

Sem entrypoint fixo, o primeiro argumento de docker run pode substituir dotnet --info. O processo executado torna-se o PID 1 e recebe diretamente os sinais do runtime. A imagem não executa bootstrap, migração ou serviço persistente.

⁠Segurança

  • executa por padrão como UID/GID 1654:1654;
  • não requer capacidades Linux adicionais nem acesso privilegiado;
  • pode usar filesystem somente leitura quando /workspace não precisar receber artefatos;
  • contém compiladores e ferramentas de rede, portanto não deve ser o estágio final de uma aplicação;
  • a base é fixada por digest e deve ser atualizada para receber correções upstream.

⁠Exemplo de build multi-stage

# syntax=docker/dockerfile:1
FROM lzocateli/dotnet-sdk:10.0.400-noble AS build
WORKDIR /workspace
COPY --chown=1654:1654 . .
RUN --mount=type=cache,target=/home/app/.nuget/packages,uid=1654,gid=1654 \
    dotnet publish --configuration Release --output /out

FROM lzocateli/dotnet-aspnet:10.0.10-noble AS runtime
WORKDIR /app
COPY --from=build --chown=1654:1654 /out .
ENTRYPOINT ["dotnet", "Aplicacao.dll"]

⁠Build local

docker build --pull --tag lzocateli/dotnet-sdk:10.0.400-noble dotnet-sdk

Para múltiplas plataformas:

docker buildx build \
  --platform linux/amd64,linux/arm64 \
  --tag lzocateli/dotnet-sdk:10.0.400-noble \
  dotnet-sdk

⁠Tags e compatibilidade

TagMutabilidadeCompatibilidadeUso recomendado
10.0.400-nobleImutável.NET SDK 10.0.400 em Ubuntu 24.04Builds versionados e CI

Não há política para latest. Uma atualização do SDK, da base, dos pacotes APT ou do contrato exige nova tag imutável e nova validação.

⁠Validação

Antes da publicação, execute:

docker buildx build --check --file dotnet-sdk/Dockerfile dotnet-sdk
docker build --pull --tag lzocateli/dotnet-sdk:10.0.400-noble dotnet-sdk
docker run --rm lzocateli/dotnet-sdk:10.0.400-noble dotnet --info
docker inspect lzocateli/dotnet-sdk:10.0.400-noble

Confirme também os ignores, as duas plataformas, o usuário não root, as ferramentas instaladas, scan de vulnerabilidades, SBOM e proveniência.

⁠Publicação

Use Actions > Publicar imagem de container > Run workflow com:

  • context_path: dotnet-sdk;
  • image_name: dotnet-sdk;
  • image_tag: 10.0.400-noble;
  • dockerfile: Dockerfile;
  • platforms: linux/amd64,linux/arm64.

O workflow publica no Docker Hub com SBOM e proveniência e pode sincronizar este README. A publicação não ocorre durante o build local.

⁠Operação e troubleshooting

SintomaCausa provávelVerificaçãoCorreção
Permission denied em /workspacebind mount não gravável pelo UID 1654docker run --rm ... idajuste a propriedade/permissão do host sem usar root permanentemente
restore retorna 401credencial NuGet ausenteexecute com logs sem imprimir tokensforneça a credencial por secret do pipeline
ping: operation not permittedruntime removeu a capacidade necessáriarevise cap_drop e política do hostprefira curl; conceda somente a capacidade estritamente necessária
aviso An issue was encountered verifying workloadsverificação upstream tenta uma operação indisponível ao UID não rootcompare dotnet workload list; builds comuns continuam funcionandonão execute como root apenas para ocultar o aviso; instale workloads em uma imagem derivada e valide-os explicitamente

Não há dados persistentes para backup ou restore. Para rollback, volte à tag imutável anterior no pipeline.

⁠Limitações conhecidas

  • As ferramentas de rede aumentam a superfície da imagem e destinam-se somente a diagnóstico durante builds.
  • A imagem não oferece daemon Docker nem suporte a Docker-in-Docker.
  • O SDK oficial 10.0.400 pode emitir um aviso ao verificar workloads sob UID não root, mesmo sem workloads instalados.
  • Em 2026-07-28, o Docker Scout reportou zero CVEs críticas e 46 altas na imagem de build: 41 atribuídas ao pacote de headers do kernel Ubuntu e cinco a System.Security.Cryptography.Xml 10.0.6. Não promova esta imagem a runtime e repita o scan antes da publicação.
  • Pacotes APT são resolvidos no build; registre o digest publicado e reconstrua sob nova tag após atualizações.

⁠Licenças e fontes

ComponenteVersãoLicençaFonte
Conteúdo original deste repositórioAtualMIThttps://github.com/lzocateli/containers
Imagem oficial .NET SDK10.0 / Ubuntu NobleMIT e licenças dos componentes distribuídoshttps://github.com/dotnet/dotnet-docker
Pacotes UbuntuNobleLicenças próprias de cada pacotehttps://packages.ubuntu.com/noble/

O badge MIT descreve somente o conteúdo original deste repositório. A imagem inclui componentes de terceiros que permanecem sujeitos aos termos e avisos de suas fontes. Consulte a política de licenciamento⁠, preserve as atribuições upstream e verifique também os avisos distribuídos dentro da imagem.

⁠Histórico de alterações

  • 10.0.400-noble: atualização para .NET SDK 10.0.400 com imagem base oficial fixada por digest.
  • 10.0.302-noble: migração para .NET 10, execução não root, ferramentas de diagnóstico e metadados OCI.

Tag summary

Content type

Image

Digest

sha256:33b9b2ea7…

Size

337.1 MB

Last updated

about 1 month ago

docker pull lzocateli/dotnet-sdk:10.0.400-noble