Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode adicionar suporte para contêineres do Docker em tipos de projeto do Visual Studio compatíveis, como ASP.NET projetos Web e outros. Consulte a visão geral para obter informações sobre tipos de projeto com suporte em sua versão do Visual Studio.
Você pode adicionar suporte para contêineres do Docker ou podman em tipos de projeto do Visual Studio compatíveis, como ASP.NET projetos Web e outros. Consulte a visão geral para obter informações sobre tipos de projeto com suporte em sua versão do Visual Studio.
Pré-requisitos
- Área de Trabalho do Docker
- Visual Studio com o ASP.NET e desenvolvimento na Web, carga de trabalho de desenvolvimento do Azure e/ou carga de trabalho de desenvolvimento da área de trabalho do .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
- Área de Trabalho do Docker ou Podman Desktop.
- Visual Studio ou para suporte ao Podman, Visual Studio 2026, com a carga de trabalho ASP.NET e desenvolvimento web, desenvolvimento do Azure e/ou desenvolvimento de desktop do .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 ao contêiner ao criar um projeto
Você pode habilitar o suporte para contêineres durante a criação do projeto selecionando Habilitar suporte ao contêiner ao criar um novo projeto, conforme mostrado na captura de tela a seguir:
Observação
Para projetos do .NET Framework (não .NET Core), somente 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 com suporte será Adicionar suporte ao Orquestrador de Contêiner 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 tinham suporte até o Visual Studio 2022 17.14.
Adicionar suporte de contêiner a um projeto existente
Você pode adicionar o suporte do Docker a um projeto existente selecionando Adicionar>Suporte a Contêiner no Gerenciador de Soluções. Os comandos Adicionar > Suporte ao Contêiner e Adicionar > Suporte ao Orquestrador de Contêiner estão localizados no menu de clique com o botão direito do mouse (ou menu de contexto) do nó de projeto de um projeto ASP.NET Core no Gerenciador de Soluções, conforme mostrado na seguinte captura de tela:
Escolha o tipo de build de contêiner e outras opções
Quando você adiciona ou habilita o suporte a contêiner a um projeto .NET 7 ou posterior, o Visual Studio mostra a caixa de diálogo Opções de Scaffolding de Contêiner, que oferece a opção de sistema operacional (Linux ou Windows) e a capacidade de escolher o tipo de compilação de contêiner, Dockerfile ou SDK do .NET.
Você também pode especificar a Distro de Imagem de Contêiner e o Contexto de Construção do Contêiner.
A Distribuição de Imagem de Contêiner especifica qual imagem do sistema operacional seus contêineres usam como a imagem base. Essa lista será alterada se você alternar entre o Linux e o Windows como o tipo de contêiner.
As seguintes imagens estão disponíveis:
Windows:
- Windows Nano Server (recomendado, disponível apenas para a versão 8.0 e posteriores, não predefinido para projetos de implantação AOT (Ahead-of-time) nativo)
- Windows Server Core (disponível apenas 8.0 e posterior)
Linux:
- Padrão (Debian, mas a tag corresponde à versão .NET que você está usando)
- Debian
- Ubuntu
- Chiseled Ubuntu
- Alpino
Observação
Contêineres baseados na imagem Chiseled Ubuntu e que usam Native Ahead-of-Time (AOT) deployment só podem ser depurados no Modo Rápido. Consulte Personalizar contêineres do Docker no Visual Studio.
O Contexto de Construção de Contêiner especifica a pasta usada para docker build (ou podman build). Consulte o contexto de build do Docker ou o build do Podman. O padrão é a pasta da solução, que é recomendada. Todos os arquivos necessários para um build precisam estar nessa 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 build de contêiner do Dockerfile , o Visual Studio adicionará o seguinte ao projeto:
- um arquivo dockerfile
- um
.dockerignorearquivo - uma referência de pacote NuGet para Microsoft.VisualStudio.Azure.Containers.Tools.Targets
O Dockerfile adicionado será semelhante ao código a seguir. Neste exemplo, o projeto foi nomeado WebApplication-Dockere você escolheu contêineres do 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 build de contêiner do SDK do .NET
Você pode usar o suporte incorporado do SDK do .NET para criação de contêineres, o que significa que não é necessário um Dockerfile; consulte Containerize um aplicativo .NET com dotnet publish. Em vez disso, você configura seus contêineres usando as propriedades do MSBuild no arquivo de projeto e as configurações para iniciar os contêineres com o Visual Studio são codificadas em um .json arquivo de configuração, launchSettings.json.
Aqui, escolha o SDK do .NET como o tipo de build de contêiner para usar o gerenciamento de contêiner do SDK do .NET em vez de um Dockerfile.
A Distribuição de Imagem de Contêiner especifica qual imagem do sistema operacional seus contêineres usam como a imagem base. Essa lista será alterada se você alternar entre o Linux e o Windows como o contêiner. Consulte a seção anterior para obter uma lista de imagens disponíveis.
A entrada de build de 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 são listadas na Personalização do contêiner. Por exemplo, a Distribuição de Imagem de Contêiner é salva como a propriedade ContainerBaseImage no arquivo de projeto. Você pode alterá-lo posteriormente editando o arquivo de projeto.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Escolha o tipo de build de contêiner e outras opções
Quando você adiciona ou habilita o suporte do Docker a um projeto .NET 7 ou posterior, o Visual Studio mostra a caixa de diálogo Opções de Scaffolding de Contêiner, que oferece a opção de sistema operacional (Linux ou Windows) e também a capacidade de escolher o tipo de compilação do contêiner, seja Dockerfile ou SDK do .NET. Essa 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 Distribuição de Imagem de Contêiner e o Contexto de Build do Docker.
A Distribuição de Imagem de Contêiner especifica qual imagem do sistema operacional seus contêineres usam como a imagem base. Essa lista será alterada se você alternar entre o Linux e o Windows como o tipo de contêiner.
As seguintes imagens estão disponíveis:
Windows:
- Windows Nano Server (recomendado, disponível apenas para a versão 8.0 e posteriores, não predefinido para projetos de implantação AOT (Ahead-of-time) nativo)
- Windows Server Core (disponível apenas 8.0 e posterior)
Linux:
- Padrão (Debian, mas a etiqueta é "8.0")
- Debian
- Ubuntu
- Chiseled Ubuntu
- Alpino
Observação
Contêineres baseados na imagem Chiseled Ubuntu e que usam Native Ahead-of-Time (AOT) deployment só podem ser depurados no Modo Rápido. Consulte Personalizar contêineres do Docker no Visual Studio.
O Contexto de Build do Docker especifica a pasta usada para o build do Docker. Consulte o contexto de construção do Docker. O padrão é a pasta da solução, que é recomendada. Todos os arquivos necessários para um build precisam estar nessa 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 build de contêiner do Dockerfile , o Visual Studio adicionará o seguinte ao projeto:
- um arquivo dockerfile
- um
.dockerignorearquivo - uma referência de pacote NuGet para Microsoft.VisualStudio.Azure.Containers.Tools.Targets
O Dockerfile adicionado será semelhante ao código a seguir. Neste exemplo, o projeto foi nomeado WebApplication-Dockere você escolheu contêineres do 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 build 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 do ASP.NET Core destinados ao .NET 6 ou posterior, você tem a opção de usar o suporte interno do SDK do .NET para builds de contêiner, o que significa que você não precisa de um Dockerfile; consulte Containerize um aplicativo .NET com a publicação do dotnet. Em vez disso, você configura seus contêineres usando as propriedades do MSBuild no arquivo de projeto e as configurações para iniciar os contêineres com o Visual Studio são codificadas em um .json arquivo de configuração, launchSettings.json.
Aqui, escolha o SDK do .NET como o tipo de build de contêiner para usar o gerenciamento de contêiner do SDK do .NET em vez de um Dockerfile.
A Distribuição de Imagem de Contêiner especifica qual imagem do sistema operacional seus contêineres usam como a imagem base. Essa lista será alterada se você alternar entre o Linux e o Windows como o contêiner. Consulte a seção anterior para obter uma lista de imagens disponíveis.
A entrada de build de 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 são listadas na Personalização do contêiner. Por exemplo, a Distribuição de Imagem de Contêiner é salva como a propriedade ContainerBaseImage no arquivo de projeto. Você pode alterá-lo posteriormente editando o arquivo de projeto.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Próximas etapas
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:
Depurando aplicativos em um contêiner local
Implantar um contêiner de ASP.NET em um registro de contêiner usando o Visual Studio
Implantar no Serviço de Aplicativo do Azure
Implantar em Aplicativos de Contêiner do Azure usando o Visual Studio