Sdílet prostřednictvím


Přidání podpory kontejnerů

Podporu kontejnerů Dockeru můžete přidat v podporovaných typech projektů sady Visual Studio, jako jsou ASP.NET webové projekty a další. Informace o podporovaných typech projektů ve vaší verzi sady Visual Studio najdete v přehledu .

Podporu kontejnerů Dockeru nebo Podman můžete přidat v podporovaných typech projektů sady Visual Studio, jako jsou ASP.NET webové projekty a další. Informace o podporovaných typech projektů ve vaší verzi sady Visual Studio najdete v přehledu .

Požadavky

Požadavky

Požadavky

Přidání podpory kontejneru při vytváření projektu

Podporu kontejnerů můžete povolit při vytváření projektu tak, že při vytváření nového projektu vyberete Povolit podporu Dockeru , jak je znázorněno na následujícím snímku obrazovky:

Snímek obrazovky znázorňující povolení podpory Dockeru pro novou webovou aplikaci ASP.NET Core v sadě Visual Studio

Podporu kontejnerů můžete povolit při vytváření projektu tak, že při vytváření nového projektu vyberete Povolit podporu kontejneru , jak je znázorněno na následujícím snímku obrazovky:

Snímek obrazovky znázorňující povolení podpory kontejneru pro novou webovou aplikaci ASP.NET Core v sadě Visual Studio

Poznámka:

Pro projekty .NET Framework (nikoli .NET Core) jsou k dispozici pouze kontejnery Windows.

Poznámka:

Při vytváření projektu konzoly .NET Framework nebo .NET Core není k dispozici žádná možnost přidat podporu Dockeru. Po vytvoření projektu konzolové aplikace .NET Core je k dispozici možnost přidat podporu Dockeru . Projekty konzolových aplikací rozhraní .NET Framework nepodporují možnost Přidat podporu Dockeru po vytvoření projektu. Po vytvoření podporují projekty konzoly .NET Framework nebo .NET Core možnost Přidat podporu orchestrátoru kontejnerů pomocí Service Fabric nebo Docker Compose.

Poznámka:

Pokud používáte úplnou šablonu projektu konzoly .NET Framework, podporovanou možností je přidat podporu nástroje Container Orchestrator po vytvoření projektu s možnostmi použití Service Fabric nebo Docker Compose. Přidání podpory při vytváření projektu a přidání podpory Dockeru pro jeden projekt bez orchestrace nejsou dostupné možnosti.

Poznámka:

Podpora kontejnerů rozhraní .NET Framework je ukončena v aktuální verzi sady Visual Studio. Kontejnery rozhraní .NET Framework byly podporovány až do sady Visual Studio 2022 17.14.

Přidání podpory kontejneru do existujícího projektu

Podporu Dockeru můžete přidat do existujícího projektu tak, že v Průzkumníku řešení vyberete >podporu Dockeru. Příkazy > Add Docker Support a > Add Container Orchestrator Support se nacházejí v kontextové (místní) nabídce uzlu projektu pro projekt ASP.NET Core v Průzkumníku řešení, jak je znázorněno na následujícím snímku obrazovky.

Podporu Dockeru můžete přidat do existujícího projektu výběrem možnosti Přidat>podporu kontejneru v Průzkumníku řešení. Příkazy Přidat > podporu kontejnerů a Přidat > podporu orchestrátoru kontejnerů se nacházejí v místní nabídce uzlu projektu ASP.NET Core v Průzkumníku řešení, jak je znázorněno na následujícím snímku obrazovky.

Snímek obrazovky s možností nabídky Přidat podporu Dockeru v sadě Visual Studio

Snímek obrazovky s možností nabídky Přidat podporu kontejneru v sadě Visual Studio

Přidání podpory Dockeru

Když přidáte nebo povolíte podporu Dockeru, Visual Studio do projektu přidá následující:

  • soubor Dockerfile
  • .dockerignore soubor
  • Odkaz na balíček NuGet na Microsoft.VisualStudio.Azure.Containers.Tools.Targets

Soubor Dockerfile, který přidáte, se podobá následujícímu kódu. V tomto příkladu byl projekt pojmenován WebApplication-Dockera zvolili jste kontejnery Linuxu:

#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"]

Volba typu sestavení kontejneru a dalších možností

Když do projektu .NET 7 nebo novějšího přidáte nebo povolíte podporu kontejneru, visual Studio zobrazí dialogové okno Možnosti generování kontejneru , které vám dává výběr operačního systému (Linux nebo Windows), ale také možnost zvolit typ sestavení kontejneru, a to buď Dockerfile nebo .NET SDK.

Můžete také zadat distribuci imagí kontejneru a kontext sestavení kontejneru.

Snímek obrazovky s dialogovým oknem Možnosti generování uživatelského rozhraní kontejneru pro přidání podpory kontejneru

Distribuce obrazu kontejneru určuje, který obraz operačního systému vaše kontejnery používají jako základní obraz. Tento seznam se změní, pokud jako typ kontejneru přepnete mezi Linuxem a Windows.

K dispozici jsou následující obrázky:

Windows:

  • Windows Nano Server (doporučeno, dostupné pouze od verze 8.0 a novější, není přednastaveno pro projekty Nativního nasazení AOT (Ahead-of-time))
  • Windows Server Core (k dispozici pouze 8.0 a novější)

Linux:

  • Výchozí (Debian, ale značka odpovídá vaší cílové verzi .NET)
  • Debian
  • Ubuntu
  • Chiseled Ubuntu
  • Alpský

Poznámka:

Kontejnery založené na image Chiseled Ubuntu, které používají nasazení Native Ahead-of-time (AOT), lze ladit pouze v rychlém režimu. Podívejte se na Přizpůsobení kontejnerů Dockeru ve Visual Studiu.

Kontext sestavení kontejneru určuje složku, která se používá pro docker build (nebo podman build). Viz kontext sestavení Dockeru nebo sestavení Podman. Výchozí je složka řešení, která se doporučuje. Všechny soubory potřebné pro sestavení musí být v této složce, což není případ, pokud zvolíte složku projektu nebo jinou složku.

Typ sestavení kontejneru Dockerfile

Pokud zvolíte typ sestavení kontejneru Dockerfile , Visual Studio do projektu přidá následující:

  • soubor Dockerfile
  • .dockerignore soubor
  • Odkaz na balíček NuGet na Microsoft.VisualStudio.Azure.Containers.Tools.Targets

Soubor Dockerfile, který přidáte, bude vypadat podobně jako následující kód. V tomto příkladu byl projekt pojmenován WebApplication-Dockera zvolili jste kontejnery Linuxu:

# 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"]

Typ sestavení kontejneru sady .NET SDK

Pro sestavení kontejnerů můžete použít integrovanou podporu sady .NET SDK, což znamená, že nepotřebujete soubor Dockerfile. viz Kontejnerizace aplikace .NET s publikováním dotnet. Místo toho nakonfigurujete kontejnery pomocí vlastností NÁSTROJE MSBuild v souboru projektu a nastavení pro spuštění kontejnerů pomocí sady Visual Studio se zakóduje do konfiguračního .json souboru launchSettings.json.

Snímek obrazovky zobrazující dialogové okno Možnosti scaffoldu kontejneru pro přidání podpory Dockeru s vybranou sadou .NET SDK jako typem sestavení kontejneru

V této části zvolte jako typ sestavení kontejneru sadu .NET SDK , abyste místo souboru Dockerfile používali správu kontejnerů sady .NET SDK.

Distribuce obrazu kontejneru určuje, který obraz operačního systému vaše kontejnery používají jako základní obraz. Tento seznam se změní, pokud jako kontejner přepnete mezi Linuxem a Windows. Seznam dostupných imagí najdete v předchozí části.

Položka sestavení kontejneru .NET SDK v launchSettings.json vypadá jako následující kód:

"Container (.NET SDK)": {
  "commandName": "SdkContainer",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_HTTPS_PORTS": "8081",
    "ASPNETCORE_HTTP_PORTS": "8080"
  },
  "publishAllPorts": true,
  "useSSL": true
}

Sada .NET SDK spravuje některá nastavení, která by byla zakódována v souboru Dockerfile, jako je základní image kontejneru, a proměnné prostředí, které se mají nastavit. Nastavení dostupná v souboru projektu pro konfiguraci kontejneru jsou uvedená v části Přizpůsobení kontejneru. Například kontejnerový obraz distribuce je uložen v souboru projektu jako ContainerBaseImage vlastnost. Soubor projektu můžete později změnit úpravou souboru projektu.

<PropertyGroup>
    <ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>

Volba typu sestavení kontejneru a dalších možností

Když do projektu .NET 7 nebo novějšího přidáte nebo povolíte podporu Dockeru, sada Visual Studio zobrazí dialogové okno Možnosti generování uživatelského rozhraní kontejneru , které vám umožní zvolit operační systém (Linux nebo Windows), ale také možnost zvolit typ sestavení kontejneru, buď Dockerfile , nebo sadu .NET SDK. Toto dialogové okno se nezobrazuje v projektech rozhraní .NET Framework.

V 17.11 a novějších verzích můžete také zadat distribuci image kontejneru a kontext sestavení Dockeru.

Snímek obrazovky s dialogovým oknem Možnosti scaffoldingu kontejnerů pro přidání podpory Dockeru.

Distribuce obrazu kontejneru určuje, který obraz operačního systému vaše kontejnery používají jako základní obraz. Tento seznam se změní, pokud jako typ kontejneru přepnete mezi Linuxem a Windows.

K dispozici jsou následující obrázky:

Windows:

  • Windows Nano Server (doporučeno, dostupné pouze od verze 8.0 a novější, není přednastaveno pro projekty Nativního nasazení AOT (Ahead-of-time))
  • Windows Server Core (k dispozici pouze 8.0 a novější)

Linux:

  • Výchozí (Debian, ale značka je 8,0)
  • Debian
  • Ubuntu
  • Chiseled Ubuntu
  • Alpský

Poznámka:

Kontejnery založené na image Chiseled Ubuntu, které používají nasazení Native Ahead-of-time (AOT), lze ladit pouze v rychlém režimu. Podívejte se na Přizpůsobení kontejnerů Dockeru ve Visual Studiu.

Kontext sestavení Dockeru určuje složku, která se používá pro sestavení Dockeru. Viz kontext sestavení Dockeru. Výchozí je složka řešení, která se doporučuje. Všechny soubory potřebné pro sestavení musí být v této složce, což není případ, pokud zvolíte složku projektu nebo jinou složku.

Typ sestavení kontejneru Dockerfile

Pokud zvolíte typ sestavení kontejneru Dockerfile , Visual Studio do projektu přidá následující:

  • soubor Dockerfile
  • .dockerignore soubor
  • Odkaz na balíček NuGet na Microsoft.VisualStudio.Azure.Containers.Tools.Targets

Soubor Dockerfile, který přidáte, bude vypadat podobně jako následující kód. V tomto příkladu byl projekt pojmenován WebApplication-Dockera zvolili jste kontejnery Linuxu:

#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"]

Typ sestavení kontejneru sady .NET SDK

S nainstalovanou sadou Visual Studio 2022 17.9 a novější se sadou .NET 7 SDK v projektech ASP.NET Core, které cílí na .NET 6 nebo novější, máte možnost použít integrovanou podporu sady .NET SDK pro sestavení kontejnerů, což znamená, že nepotřebujete soubor Dockerfile; viz Kontejnerizace aplikace .NET s publikováním dotnet. Místo toho nakonfigurujete kontejnery pomocí vlastností NÁSTROJE MSBuild v souboru projektu a nastavení pro spuštění kontejnerů pomocí sady Visual Studio se zakóduje do konfiguračního .json souboru launchSettings.json.

Snímek obrazovky zobrazující dialogové okno Možnosti scaffoldu kontejneru pro přidání podpory Dockeru s vybranou sadou .NET SDK jako typem sestavení kontejneru

V této části zvolte jako typ sestavení kontejneru sadu .NET SDK , abyste místo souboru Dockerfile používali správu kontejnerů sady .NET SDK.

Distribuce obrazu kontejneru určuje, který obraz operačního systému vaše kontejnery používají jako základní obraz. Tento seznam se změní, pokud jako kontejner přepnete mezi Linuxem a Windows. Seznam dostupných imagí najdete v předchozí části.

Položka sestavení kontejneru .NET SDK v launchSettings.json vypadá jako následující kód:

"Container (.NET SDK)": {
  "commandName": "SdkContainer",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_HTTPS_PORTS": "8081",
    "ASPNETCORE_HTTP_PORTS": "8080"
  },
  "publishAllPorts": true,
  "useSSL": true
}

Sada .NET SDK spravuje některá nastavení, která by byla zakódována v souboru Dockerfile, jako je základní image kontejneru, a proměnné prostředí, které se mají nastavit. Nastavení dostupná v souboru projektu pro konfiguraci kontejneru jsou uvedená v části Přizpůsobení kontejneru. Například kontejnerový obraz distribuce je uložen v souboru projektu jako ContainerBaseImage vlastnost. Soubor projektu můžete později změnit úpravou souboru projektu.

<PropertyGroup>
    <ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>

Další kroky

Další podrobnosti o implementaci služeb a použití nástrojů sady Visual Studio pro práci s kontejnery najdete v následujících článcích:

Docker ve Visual Studiu

Ladění aplikací v místním kontejneru

Nasazení kontejneru ASP.NET do registru kontejneru pomocí sady Visual Studio

Nasazení do Azure App Service

Nasazení do Azure Container Apps pomocí sady Visual Studio