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:

Screenshot showing how to enable Docker Support for new ASP.NET Core web app in Visual Studio.

Screenshot showing how to enable Docker Support for new ASP.NET Core web app in 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:

Screenshot showing how to add Docker Support menu option in Visual Studio.

Screenshot showing how to add Docker Support menu option in 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.

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

Přidání podpory Dockeru pomocí možnosti .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, spustí se Nastavení.json.

Screenshot showing the Container Scaffolding Options dialog for adding Docker support.

Položka sestavení kontejneru .NET SDK ve spuštění Nastavení.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é z možností, které by byly zakódovány do souboru Dockerfile, například základní image kontejneru, která je zvolena tak, aby odpovídala cílové verzi .NET, 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.

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.

Screenshot of Containers window.

Screenshot of Containers window.

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:

Screenshot of Docker files in Solution Explorer in Visual Studio.

Screenshot of Docker files in Solution Explorer in 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