Visual Studio Container Tools for Docker

Nástroje zahrnuté v sadě Visual Studio pro vývoj s kontejnery Dockeru se snadno používají a výrazně zjednodušují sestavování, ladění a nasazování pro kontejnerizované aplikace. Můžete pracovat s kontejnerem pro jeden projekt nebo pomocí orchestrace kontejnerů s Docker Compose nebo Service Fabric pracovat s více službami v kontejnerech.

Požadavky

Podpora Dockeru v sadě Visual Studio

Podpora Dockeru je dostupná pro projekty ASP.NET, projekty ASP.NET Core a konzolové projekty .NET Core a .NET Framework.

Podpora Dockeru v sadě Visual Studio se v reakci na potřeby zákazníků změnila v několika verzích. Do projektu můžete přidat dvě úrovně podpory Dockeru a podporované možnosti se liší podle typu projektu a verze sady Visual Studio. Pokud u některých podporovaných typů projektů chcete jenom kontejner pro jeden projekt bez použití orchestrace, můžete to udělat přidáním podpory Dockeru. Další úrovní je podpora orchestrace kontejnerů, která přidává odpovídající soubory podpory pro konkrétního orchestrátora, který zvolíte.

V sadě Visual Studio 2019 můžete jako služby orchestrace kontejnerů používat Docker Compose, Kubernetes a Service Fabric.

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í obou projektů konzoly .NET Framework nebo .NET Core podporují možnost Přidat podporu orchestrátoru kontejnerů pomocí Service Fabric nebo Docker Compose.

V sadě Visual Studio 2019 verze 16.4 a novější je k dispozici okno Kontejnery, které umožňuje zobrazit spuštěné kontejnery , procházet dostupné image, zobrazit proměnné prostředí, protokoly a mapování portů, zkontrolovat systém souborů, připojit ladicí program nebo otevřít okno terminálu v prostředí kontejneru. Viz Použití okna Kontejnery.

Požadavky

Podpora Dockeru v sadě Visual Studio

Podpora Dockeru je dostupná pro projekty ASP.NET, projekty ASP.NET Core a konzolové projekty .NET Core a .NET Framework.

Podpora Dockeru v sadě Visual Studio se v reakci na potřeby zákazníků změnila v několika verzích. Existuje několik možností, jak do projektu přidat podporu Dockeru a podporované možnosti se liší podle typu projektu a verze sady Visual Studio. Pokud u některých podporovaných typů projektů chcete jenom kontejner pro jeden projekt bez použití orchestrace, můžete to udělat přidáním podpory Dockeru. Další úrovní je podpora orchestrace kontejnerů, která přidává odpovídající soubory podpory pro konkrétního orchestrátora, který zvolíte.

Když v sadě Visual Studio 2022 verze 17.9 a novějším přidáte podporu Dockeru do projektu .NET 7 nebo novějším, máte dva typy sestavení kontejneru, ze kterých si můžete vybrat pro přidání podpory Dockeru. Můžete přidat soubor Dockerfile a určit, jak se mají sestavit image kontejneru, nebo můžete použít integrovanou podporu kontejneru poskytovanou sadou .NET SDK.

Při výběru orchestrace kontejnerů můžete také se sadou Visual Studio 2022 a novějšími používat Docker Compose nebo Service Fabric jako služby orchestrace kontejnerů.

Poznámka:

Pokud používáte úplnou šablonu projektu konzoly rozhraní .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.

V sadě Visual Studio 2022 je k dispozici okno Kontejnery , které umožňuje zobrazit spuštěné kontejnery, procházet dostupné image, zobrazovat proměnné prostředí, protokoly a mapování portů, kontrolovat systém souborů, připojit ladicí program nebo otevřít okno terminálu v prostředí kontejneru. Viz Použití okna Kontejnery.

Poznámka:

Licenční požadavky Dockeru se můžou lišit pro různé verze Docker Desktopu. V dokumentaci k Dockeru najdete informace o aktuálních licenčních požadavcích pro použití vaší verze Docker Desktopu pro vývoj ve vaší situaci.

Přidání podpory Dockeru

Podporu Dockeru můžete povolit při vytváření projektu výběrem možnosti Povolit podporu Dockeru při vytváření nového projektu, 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

Snímek obrazovky znázorňující povolení podpory Dockeru 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.

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

Snímek obrazovky znázorňující přidání možnosti nabídky Podpory Dockeru v sadě Visual Studio

Snímek obrazovky znázorňující přidání možnosti nabídky Podpory Dockeru 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, 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: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"]

Přidání podpory Dockeru pomocí typu sestavení kontejneru Dockerfile

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 ani v projektech Azure Functions.

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 generování uživatelského rozhraní kontejneru pro přidání podpory Dockeru

Distribuce image kontejneru určuje, kterou image operačního systému vaše kontejnery používají jako základní image. 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é jenom 8.0 a novější, není přednastavené pro nativní projekty nasazení AOT (Head-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
  • Alpine

Poznámka:

Kontejnery založené na imagi Chiseled Ubuntu a které používají nasazení AOT (Native AOT) před časem, je možné ladit pouze v rychlém režimu. Viz Přizpůsobení kontejnerů Dockeru v sadě Visual Studio.

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 důrazně doporučuje. Všechny soubory potřebné pro sestavení musí být v této složce, což obvykle neplatí, pokud zvolíte složku projektu nebo jinou složku.

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

  • soubor Dockerfile
  • soubor .dockerignore
  • 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:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.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"]

Kontejnerizace aplikace .NET bez souboru Dockerfile

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 s dialogovým oknem Možnosti generování uživatelského rozhraní kontejneru pro přidání podpory Dockeru se sadou .NET SDK vybranou jako typ 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 image kontejneru určuje, kterou image operačního systému vaše kontejnery používají jako základní image. 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 distribuce image kontejneru je uložena 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>

Použití okna Kontejnery

Okno Kontejnery umožňuje zobrazit kontejnery a image na vašem počítači a zjistit, co se s nimi děje. Můžete zobrazit systém souborů, připojené svazky, proměnné prostředí, použité porty a prozkoumat soubory protokolu.

Otevřete okno Kontejnery pomocí rychlého spuštění (Ctrl+Q) a zadáním .containers Ovládací prvky ukotvení můžete použít k umístění okna. Vzhledem k šířce okna funguje nejlépe při ukotvení v dolní části obrazovky.

Vyberte kontejner a pomocí karet zobrazte dostupné informace. Pokud si ji chcete prohlédnout, spusťte aplikaci s podporou Dockeru , otevřete kartu Soubory a rozbalte složku aplikace , abyste viděli nasazenou aplikaci v kontejneru.

Snímek obrazovky s oknem Kontejnery

Snímek obrazovky s oknem Kontejnery

Další informace najdete v tématu Použití okna Kontejnery.

Podpora docker Compose

Pokud chcete vytvořit řešení s více kontejnery pomocí Docker Compose, přidejte do svých projektů podporu orchestrátoru kontejnerů. To vám umožní spouštět a ladit skupinu kontejnerů (celé řešení nebo skupiny projektů), pokud jsou definované ve stejném souboru docker-compose.yml .

Pokud chcete přidat podporu orchestrátoru kontejnerů pomocí nástroje Docker Compose, klikněte pravým tlačítkem na uzel projektu v Průzkumník řešení a zvolte Přidat > podporu nástroje Container Orchestrator. Pak zvolte Docker Compose a spravujte kontejnery.

Po přidání podpory orchestrátoru kontejneru do projektu se do projektu přidá soubor Dockerfile (pokud tam ještě nebyl) a do řešení Průzkumník řešení se přidala složka docker-compose, jak je znázorněno tady:

Snímek obrazovky se soubory Dockeru v Průzkumník řešení v sadě Visual Studio

Snímek obrazovky se soubory Dockeru v Průzkumník řešení v sadě Visual Studio

Pokud docker-compose.yml už existuje, Visual Studio do něj jenom přidá požadované řádky konfiguračního kódu.

Opakujte proces s ostatními projekty, které chcete řídit pomocí Docker Compose.

Pokud pracujete s velkým počtem služeb, můžete ušetřit čas a výpočetní prostředky tím, že vyberete podmnožinu služeb, které chcete spustit v ladicí relaci. Viz Spuštění podmnožina služeb Compose.

Poznámka:

Všimněte si, že nástroje sady Visual Studio nepodporují vzdálené hostitele Dockeru.

Podpora Service Fabric

Pomocí nástrojů Service Fabric v sadě Visual Studio můžete vyvíjet a ladit azure Service Fabric, spouštět a ladit místně a nasazovat do Azure.

Visual Studio 2019 a novější podporují vývoj kontejnerizovaných mikroslužeb pomocí kontejnerů Windows a orchestrace Service Fabric.

Podrobný kurz najdete v tématu Kurz: Nasazení aplikace .NET v kontejneru Windows do Azure Service Fabric.

Další informace o Službě Azure Service Fabric najdete v tématu Service Fabric.

Průběžné doručování a kontinuální integrace (CI/CD)

Visual Studio se snadno integruje se službou Azure Pipelines pro automatizovanou a kontinuální integraci a doručování změn kódu a konfigurace služby. Pokud chcete začít, přečtěte si téma Vytvoření prvního kanálu.

Informace o Service Fabric najdete v kurzu : Nasazení aplikace ASP.NET Core do Azure Service Fabric pomocí azure DevOps Projects.

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:

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

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