Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode adicionar suporte para contêineres do Docker em tipos de projeto do Visual Studio com suporte, como projetos da Web ASP.NET e outros. Consulte a visão geral para obter informações sobre tipos de projeto suportados em sua versão do Visual Studio.
Você pode adicionar suporte para contêineres Docker ou Podman em tipos de projeto do Visual Studio suportados, como projetos da Web ASP.NET e outros. Consulte a visão geral para obter informações sobre tipos de projeto suportados em sua versão do Visual Studio.
Pré-requisitos
- Área de trabalho do Docker
- Visual Studio com a carga de trabalho de desenvolvimento ASP.NET e Web, carga de trabalho de desenvolvimento do Azure e/ou carga de trabalho de desenvolvimento de área de trabalho .NET instalada.
- Para publicar no Registro de Contêiner do Azure, é necessária uma assinatura do Azure. Inscreva-se numa avaliação gratuita.
Pré-requisitos
- Docker Desktop ou Podman Desktop.
- Visual Studio ou, para suporte ao Podman, Visual Studio 2026, com a carga de trabalho de desenvolvimento ASP.NET e web, carga de trabalho de desenvolvimento do Azure e/ou carga de trabalho de desenvolvimento de desktop .NET instalada.
- Para publicar no Registro de Contêiner do Azure, é necessária uma assinatura do Azure. Inscreva-se numa avaliação gratuita.
Adicionar suporte de contêiner ao criar um projeto
Você pode habilitar o suporte para contêineres durante a criação do projeto selecionando Habilitar suporte a contêineres ao criar um novo projeto, conforme mostrado na captura de tela a seguir:
Observação
Para projetos do .NET Framework (não do .NET Core), apenas contêineres do Windows estão disponíveis.
Observação
Se você estiver usando o modelo de projeto de console completo do .NET Framework, a opção suportada é Adicionar suporte ao Container Orchestrator após a criação do projeto, com opções para usar o Service Fabric ou o Docker Compose. Adicionar suporte na criação do projeto e Adicionar suporte ao Docker para um único projeto sem orquestração não são opções disponíveis.
Observação
O suporte para contêineres do .NET Framework é descontinuado na versão atual do Visual Studio. Os contêineres do .NET Framework eram suportados até o Visual Studio 2022 17.14.
Adicionar suporte de contêiner a um projeto existente
Você pode adicionar suporte ao Docker a um projeto existente selecionando Adicionar>suporte a contêiner no Gerenciador de Soluções. Os comandos Add > Container Support e Add > Container Orchestrator Support estão localizados no menu do botão direito do mouse (ou menu de contexto) do nó do projeto para um projeto ASP.NET Core no Gerenciador de Soluções, conforme mostrado na captura de tela a seguir:
Escolha o tipo de construção de contêiner e outras opções
Quando você adiciona ou habilita o suporte de contêiner para um projeto .NET 7 ou posterior, o Visual Studio mostra a caixa de diálogo Opções de Andaime de Contêiner, que lhe dá a opção de sistema operacional (Linux ou Windows), mas também a capacidade de escolher o tipo de compilação de contêiner, Dockerfile ou .NET SDK.
Você também pode especificar a Distribuição de Imagem de Contentor e o Contexto de Construção do Contentor.
A Distro de Imagem de Contêiner especifica qual imagem do sistema operacional seus contêineres usam como imagem base. Essa lista será alterada se você alternar entre Linux e Windows como o tipo de contêiner.
Estão disponíveis as seguintes imagens:
Janelas:
- Windows Nano Server (recomendado, disponível apenas na versão 8.0 e posteriores, não é predefinido para os projetos de implantação de Native Ahead-of-time (AOT))
- Windows Server Core (disponível apenas 8.0 e posterior)
Linux:
- Padrão (Debian, mas a tag corresponde à sua versão .NET de destino)
- Debian
- Ubuntu
- Chiseled Ubuntu
- Alpino
Observação
Os contentores baseados na imagem Chiseled do Ubuntu e que usam a implantação Antecipada Nativa (AOT) só podem ser depurados no modo Rápido. Consulte Personalizar contêineres do Docker no Visual Studio.
Container Build Context especifica a pasta que é usada para docker build (ou podman build). Consulte Contexto de compilação do Docker ou Podman build. O padrão é a pasta da solução, que é recomendada. Todos os arquivos necessários para uma compilação precisam estar sob esta pasta, o que não é o caso se você escolher a pasta do projeto ou alguma outra pasta.
Tipo de compilação de contêiner do Dockerfile
Se você escolher o tipo de compilação de contêiner Dockerfile , o Visual Studio adicionará o seguinte ao projeto:
- um arquivo Dockerfile
- um
.dockerignoreficheiro - uma referência de pacote NuGet para o Microsoft.VisualStudio.Azure.Containers.Tools.Targets
O Dockerfile que você adicionar será semelhante ao código a seguir. Neste exemplo, o projeto foi nomeado WebApplication-Docker, e você escolheu contêineres Linux:
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj", "WebApplication15-AddContainerSupport/"]
RUN dotnet restore "./WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj"
COPY . .
WORKDIR "/src/WebApplication15-AddContainerSupport"
RUN dotnet build "./WebApplication15-AddContainerSupport.csproj" -c $BUILD_CONFIGURATION -o /app/build
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication15-AddContainerSupport.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication15-AddContainerSupport.dll"]
Tipo de compilação de contêiner do SDK do .NET
Você pode usar o suporte interno do SDK do .NET para compilações de contêiner, o que significa que você não precisa de um Dockerfile; consulte Containerize a .NET app with dotnet publish. Em vez disso, você configura seus contêineres usando propriedades MSBuild no arquivo de projeto e as configurações para iniciar os contêineres com o Visual Studio são codificadas em um arquivo de .json configuração, launchSettings.json.
Aqui, escolha o SDK do .NET como o tipo de compilação de contêiner para usar o gerenciamento de contêiner do SDK do .NET em vez de um Dockerfile.
A Distro de Imagem de Contêiner especifica qual imagem do sistema operacional seus contêineres usam como imagem base. Esta lista muda se você alternar entre Linux e Windows como o contêiner. Consulte a secção anterior para obter uma lista das imagens disponíveis.
A entrada de compilação do contêiner do SDK do .NET no launchSettings.json se parece com o seguinte código:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
O SDK do .NET gerencia algumas das configurações que teriam sido codificadas em um Dockerfile, como a imagem base do contêiner e as variáveis de ambiente a serem definidas. As configurações disponíveis no arquivo de projeto para configuração de contêiner estão listadas em Personalizando seu contêiner. Por exemplo, a Distro de Imagem de Contêiner é salva no arquivo de projeto como a ContainerBaseImage propriedade. Você pode alterá-lo mais tarde editando o arquivo de projeto.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Escolha o tipo de construção de contêiner e outras opções
Quando você adiciona ou habilita o suporte ao Docker a um projeto .NET 7 ou posterior, o Visual Studio mostra a caixa de diálogo Opções de Andaime de Contêiner, que oferece a opção de sistema operacional (Linux ou Windows), mas também a capacidade de escolher o tipo de compilação de contêiner, Dockerfile ou .NET SDK. Esta caixa de diálogo não aparece em projetos do .NET Framework.
Na versão 17.11 e posterior, você também pode especificar a Distro de Imagem de Contêiner e o Contexto de Compilação do Docker.
A Distro de Imagem de Contêiner especifica qual imagem do sistema operacional seus contêineres usam como imagem base. Essa lista será alterada se você alternar entre Linux e Windows como o tipo de contêiner.
Estão disponíveis as seguintes imagens:
Janelas:
- Windows Nano Server (recomendado, disponível apenas na versão 8.0 e posteriores, não é predefinido para os projetos de implantação de Native Ahead-of-time (AOT))
- Windows Server Core (disponível apenas 8.0 e posterior)
Linux:
- Padrão (Debian, mas a tag é "8.0")
- Debian
- Ubuntu
- Ubuntu Esculpido
- Alpino
Observação
Os contentores baseados na imagem Chiseled do Ubuntu e que usam a implantação Antecipada Nativa (AOT) só podem ser depurados no modo Rápido. Consulte Personalizar contêineres do Docker no Visual Studio.
Docker Build Context especifica a pasta que é usada para a compilação do Docker. Consulte Contexto de compilação do Docker. O padrão é a pasta da solução, que é recomendada. Todos os arquivos necessários para uma compilação precisam estar sob esta pasta, o que não é o caso se você escolher a pasta do projeto ou alguma outra pasta.
Tipo de compilação de contêiner do Dockerfile
Se você escolher o tipo de compilação de contêiner Dockerfile , o Visual Studio adicionará o seguinte ao projeto:
- um arquivo Dockerfile
- um
.dockerignoreficheiro - uma referência de pacote NuGet para o Microsoft.VisualStudio.Azure.Containers.Tools.Targets
O Dockerfile que você adicionar será semelhante ao código a seguir. Neste exemplo, o projeto foi nomeado WebApplication-Docker, e você escolheu contêineres Linux:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]
Tipo de compilação de contêiner do SDK do .NET
Com o Visual Studio 2022 17.9 e posterior com o SDK do .NET 7 instalado, em projetos ASP.NET Core destinados ao .NET 6 ou posterior, você tem a opção de usar o suporte interno do SDK do .NET para compilações de contêiner, o que significa que você não precisa de um Dockerfile; consulte Containerize a .NET app with dotnet publish. Em vez disso, você configura seus contêineres usando propriedades MSBuild no arquivo de projeto e as configurações para iniciar os contêineres com o Visual Studio são codificadas em um arquivo de .json configuração, launchSettings.json.
Aqui, escolha o SDK do .NET como o tipo de compilação de contêiner para usar o gerenciamento de contêiner do SDK do .NET em vez de um Dockerfile.
A Distro de Imagem de Contêiner especifica qual imagem do sistema operacional seus contêineres usam como imagem base. Esta lista muda se você alternar entre Linux e Windows como o contêiner. Consulte a secção anterior para obter uma lista das imagens disponíveis.
A entrada de compilação do contêiner do SDK do .NET no launchSettings.json se parece com o seguinte código:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
O SDK do .NET gerencia algumas das configurações que teriam sido codificadas em um Dockerfile, como a imagem base do contêiner e as variáveis de ambiente a serem definidas. As configurações disponíveis no arquivo de projeto para configuração de contêiner estão listadas em Personalizando seu contêiner. Por exemplo, a Distro de Imagem de Contêiner é salva no arquivo de projeto como a ContainerBaseImage propriedade. Você pode alterá-lo mais tarde editando o arquivo de projeto.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Próximos passos
Para obter mais detalhes sobre a implementação de serviços e o uso de ferramentas do Visual Studio para trabalhar com contêineres, leia os seguintes artigos:
Depuração de aplicações num contentor local
Implantar um contêiner de ASP.NET em um registro de contêiner usando o Visual Studio
Implementar no Serviço de Aplicações do Azure
Implantar em Aplicativos de Contêiner do Azure usando o Visual Studio