Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan lägga till stöd för Docker-containrar i Visual Studio-projekttyper som stöds, till exempel ASP.NET webbprojekt och andra. Se översikten för information om projekttyper som stöds i din version av Visual Studio.
Du kan lägga till stöd för Docker- eller Podman-containrar i Visual Studio-projekttyper som stöds, till exempel ASP.NET webbprojekt och andra. Se översikten för information om projekttyper som stöds i din version av Visual Studio.
Förutsättningar
- Docker Desktop
- Visual Studio 2019 eller senare med arbetsbelastningen ASP.NET och webbutveckling, Azure-utvecklingsarbetsbelastning och/eller .NET Core plattformsoberoende utveckling installerad.
- .NET Core Development Tools för utveckling med .NET Core.
- För att publicera till Azure Container Registry krävs en Azure-prenumeration. Registrera dig för en kostnadsfri utvärderingsversion.
Förutsättningar
- Docker Desktop
- Visual Studio med arbetsbelastningen ASP.NET och webbutveckling, Azure-utveckling och/eller .NET-skrivbordsutveckling installerad.
- För att publicera till Azure Container Registry krävs en Azure-prenumeration. Registrera dig för en kostnadsfri utvärderingsversion.
Förutsättningar
- Docker Desktop eller Podman Desktop.
- Visual Studio, eller för Podman-stöd, Visual Studio (Insiders), med arbetsbelastningen ASP.NET och webbutveckling, Azure-utvecklingsarbetsbelastning och/eller .NET-skrivbordsutveckling installerad.
- För att publicera till Azure Container Registry krävs ett Azure-abonnemang. Registrera dig för en kostnadsfri utvärderingsversion.
Lägga till containerstöd när du skapar ett projekt
Du kan aktivera stöd för containrar när projektet skapas genom att välja Aktivera Docker-stöd när du skapar ett nytt projekt, enligt följande skärmbild:
               
              
            
Du kan aktivera stöd för containrar när projektet skapas genom att välja Aktivera containerstöd när du skapar ett nytt projekt, enligt följande skärmbild:
               
              
            
Anmärkning
För .NET Framework-projekt (inte .NET Core) är endast Windows-containrar tillgängliga.
Anmärkning
När du skapar ett .NET Framework- eller .NET Core-konsolprojekt finns det inget alternativ för att lägga till Docker-stöd. När ett .NET Core-konsolprogramprojekt har skapats är alternativet Lägg till Docker-support tillgängligt. .NET Framework-konsolprogramprojekt stöder inte alternativet Lägg till Docker-support när projektet har skapats. När det har skapats stöder både .NET Framework- eller .NET Core-konsolprojekt alternativet Lägg till stöd för Container Orchestrator med hjälp av Service Fabric eller Docker Compose.
Anmärkning
Om du använder den fullständiga .NET Framework-konsolprojektmallen är alternativet Lägg till stöd för Container Orchestrator när projektet har skapats, med alternativ för att använda Service Fabric eller Docker Compose. Det finns inga tillgängliga alternativ för att lägga till stöd vid projektskapande och Lägg till Docker-stöd för ett enskilt projekt utan orkestrering.
Anmärkning
Stöd för .NET Framework-containrar upphör i den aktuella versionen av Visual Studio. .NET Framework-containrar stöds fram till Visual Studio 2022 17.14.
Lägga till containerstöd i ett befintligt projekt
Du kan lägga till Docker-stöd i ett befintligt projekt genom att välja Lägg till>Docker-stöd i Solution Explorer. Kommandona Lägg till > Stöd för Docker och Lägg till > stöd för Container Orchestrator finns på snabbmenyn (eller snabbmenyn) för projektnoden för ett ASP.NET Core-projekt i Solution Explorer, som du ser i följande skärmbild:
Du kan lägga till Docker-stöd i ett befintligt projekt genom att välja Lägg till>containerstöd i Solution Explorer. Kommandona Lägg till > containerstöd och Lägg till > stöd för Container Orchestrator finns på snabbmenyn (eller snabbmenyn) för projektnoden för ett ASP.NET Core-projekt i Solution Explorer, som du ser på följande skärmbild:
               
              
            
               
              
            
Lägga till Docker-stöd
När du lägger till eller aktiverar Docker-stöd lägger Visual Studio till följande i projektet:
- en Dockerfile-fil
- en .dockerignorefil
- en NuGet-paketreferens till Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Den Dockerfile som du lägger till liknar följande kod. I det här exemplet fick projektet namnet WebApplication-Docker, och du valde Linux-containrar:
#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:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:3.1 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"]
Välj typ av containerbygge och andra alternativ
När du lägger till eller aktiverar containerstöd för ett .NET 7- eller senare projekt visar Visual Studio dialogrutan Alternativ för containerställningar , vilket ger dig möjlighet att välja operativsystem (Linux eller Windows), men även möjligheten att välja containerbyggtyp, antingen Dockerfile eller .NET SDK.
Du kan också ange Container Image Distro och Container Byggkontext.
               
              
            
Container Image Distro anger vilken OS-avbildning dina containrar använder som basavbildning. Den här listan ändras om du växlar mellan Linux och Windows som containertyp.
Följande bilder är tillgängliga:
Windows:
- Windows Nano Server (rekommenderas, endast tillgängligt 8.0 och senare, inte förinställt för interna distributionsprojekt i förväg (AOT)
- Windows Server Core (endast tillgängligt 8.0 och senare)
Linux:
- Standard (Debian, men taggen matchar din .NET-målversion)
- Debian
- Ubuntu
- Chiseled Ubuntu
- Alpin
Anmärkning
Containrar baserade på den mejslade Ubuntu-avbildningen och som använder Native Ahead-of-time (AOT)-distribution kan bara debuggas i snabbläge. Se Anpassa Docker-containrar i Visual Studio.
              Container Build Context anger den mapp som används för docker build (eller podman build). Se Docker-byggkontext eller Podman-version. Standardinställningen är lösningsmappen, vilket rekommenderas. Alla filer som behövs för en version måste finnas under den här mappen, vilket inte är fallet om du väljer projektmappen eller någon annan mapp.
Byggtyp för Dockerfile-container
Om du väljer containerbyggtypen Dockerfile lägger Visual Studio till följande i projektet:
- en Dockerfile-fil
- en .dockerignorefil
- en NuGet-paketreferens till Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Den Dockerfile som du lägger till liknar följande kod. I det här exemplet fick projektet namnet WebApplication-Docker, och du valde Linux-containrar:
# 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"]
.NET SDK-typ för containerbygge
Du kan använda .NET SDK:s inbyggda stöd för containerversioner, vilket innebär att du inte behöver någon Dockerfile. se Containerisera en .NET-app med dotnet publish. I stället konfigurerar du dina containrar med hjälp av MSBuild-egenskaper i projektfilen, och inställningarna för att starta containrarna med Visual Studio kodas i en .json konfigurationsfil launchSettings.json.
               
              
            
Här väljer du .NET SDK som containerversionstyp för att använda .NET SDK:s containerhantering i stället för en Dockerfile.
Container Image Distro anger vilken OS-avbildning dina containrar använder som basavbildning. Den här listan ändras om du växlar mellan Linux och Windows som container. I föregående avsnitt finns en lista över tillgängliga bilder.
Kompileringsposten för .NET SDK-containern i launchSettings.json ser ut som följande kod:
"Container (.NET SDK)": {
  "commandName": "SdkContainer",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_HTTPS_PORTS": "8081",
    "ASPNETCORE_HTTP_PORTS": "8080"
  },
  "publishAllPorts": true,
  "useSSL": true
}
.NET SDK hanterar några av de inställningar som skulle ha kodats i en Dockerfile, till exempel containerbasavbildningen och de miljövariabler som ska anges. De inställningar som är tillgängliga i projektfilen för containerkonfiguration visas i Anpassa din container. Till exempel sparas Container Image Distro i projektfilen som ContainerBaseImage egenskap. Du kan ändra den senare genom att redigera projektfilen.
<PropertyGroup>
    <ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Välj typ av containerbygge och andra alternativ
När du lägger till eller aktiverar Docker-stöd i ett .NET 7- eller senare projekt visar Visual Studio dialogrutan Alternativ för containerställningar , vilket ger dig möjlighet att välja operativsystem (Linux eller Windows), men även möjligheten att välja containerbyggtyp, antingen Dockerfile eller .NET SDK. Den här dialogrutan visas inte i .NET Framework-projekt.
I 17.11 och senare kan du också ange Container Image Distro och Docker Build Context.
               
              
            
Container Image Distro anger vilken OS-avbildning dina containrar använder som basavbildning. Den här listan ändras om du växlar mellan Linux och Windows som containertyp.
Följande bilder är tillgängliga:
Windows:
- Windows Nano Server (rekommenderas, endast tillgängligt 8.0 och senare, inte förinställt för Native Ahead-of-time (AOT)-distributionsprojekt)
- Windows Server Core (endast tillgängligt 8.0 och senare)
Linux:
- Standard (Debian, men taggen är "8.0")
- Debian
- Ubuntu
- Chiseled Ubuntu
- Alpin
Anmärkning
Containrar baserade på mejslade Ubuntu-avbilder och som använder AOT-distribution (Native Ahead-of-time) kan bara felsökas i Fast Mode. Se Anpassa Docker-containrar i Visual Studio.
Docker Build Context anger mappen som används för Docker-versionen. Se Docker-byggkontext. Standardinställningen är lösningsmappen, vilket rekommenderas. Alla filer som behövs för en version måste finnas under den här mappen, vilket inte är fallet om du väljer projektmappen eller någon annan mapp.
Byggtyp för Dockerfile-container
Om du väljer containerbyggtypen Dockerfile lägger Visual Studio till följande i projektet:
- en Dockerfile-fil
- en .dockerignorefil
- en NuGet-paketreferens till Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Den Dockerfile som du lägger till liknar följande kod. I det här exemplet fick projektet namnet WebApplication-Docker, och du valde Linux-containrar:
#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"]
.NET SDK-typ för containerbygge
Med Visual Studio 2022 17.9 och senare med .NET 7 SDK installerat kan du i ASP.NET Core-projekt som riktar sig mot .NET 6 eller senare använda .NET SDK:s inbyggda stöd för containerbyggen, vilket innebär att du inte behöver någon Dockerfile. se Containerisera en .NET-app med dotnet publish. I stället konfigurerar du dina containrar med hjälp av MSBuild-egenskaper i projektfilen, och inställningarna för att starta containrarna med Visual Studio kodas i en .json konfigurationsfil launchSettings.json.
               
              
            
Här väljer du .NET SDK som containerversionstyp för att använda .NET SDK:s containerhantering i stället för en Dockerfile.
Container Image Distro anger vilken OS-avbildning dina containrar använder som basavbildning. Den här listan ändras om du växlar mellan Linux och Windows som container. I föregående avsnitt finns en lista över tillgängliga bilder.
Kompileringsposten för .NET SDK-containern i launchSettings.json ser ut som följande kod:
"Container (.NET SDK)": {
  "commandName": "SdkContainer",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_HTTPS_PORTS": "8081",
    "ASPNETCORE_HTTP_PORTS": "8080"
  },
  "publishAllPorts": true,
  "useSSL": true
}
.NET SDK hanterar några av de inställningar som skulle ha kodats i en Dockerfile, till exempel containerbasavbildningen och de miljövariabler som ska anges. De inställningar som är tillgängliga i projektfilen för containerkonfiguration visas i Anpassa din container. Till exempel sparas Container Image Distro i projektfilen som ContainerBaseImage egenskap. Du kan ändra den senare genom att redigera projektfilen.
<PropertyGroup>
    <ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Nästa steg
Mer information om tjänsteimplementering och användning av Visual Studio-verktyg för att arbeta med containrar finns i följande artiklar:
Felsöka appar i en lokal container
Distribuera en ASP.NET container till ett containerregister med Hjälp av Visual Studio
Distribuera till Azure App Service
Distribuera till Azure Container Apps med Visual Studio