Visual Studio Container Tools for Docker

Narzędzia zawarte w programie Visual Studio do tworzenia za pomocą kontenerów platformy Docker są łatwe w użyciu i znacznie upraszczają kompilowanie, debugowanie i wdrażanie konteneryzowanych aplikacji. Możesz pracować z kontenerem dla pojedynczego projektu lub używać orkiestracji kontenerów z narzędziem Docker Compose lub Service Fabric do pracy z wieloma usługami w kontenerach.

Wymagania wstępne

Obsługa platformy Docker w programie Visual Studio

Obsługa platformy Docker jest dostępna dla projektów ASP.NET, projektów ASP.NET Core oraz projektów konsoli .NET Core i .NET Framework.

Obsługa platformy Docker w programie Visual Studio zmieniła się w wielu wersjach w odpowiedzi na potrzeby klientów. Istnieją dwa poziomy obsługi platformy Docker, które można dodać do projektu, a obsługiwane opcje różnią się w zależności od typu projektu i wersji programu Visual Studio. W przypadku niektórych obsługiwanych typów projektów, jeśli chcesz tylko kontener dla pojedynczego projektu, bez używania aranżacji, możesz to zrobić, dodając obsługę platformy Docker. Następnym poziomem jest obsługa orkiestracji kontenerów, która dodaje odpowiednie pliki pomocy technicznej dla wybranego koordynatora.

W programie Visual Studio 2019 można używać programów Docker Compose, Kubernetes i Service Fabric jako usług orkiestracji kontenerów.

Uwaga

Podczas tworzenia projektu konsoli .NET Framework lub .NET Core nie ma możliwości dodania obsługi platformy Docker. Po utworzeniu projektu aplikacji konsolowej platformy .NET Core dostępna jest opcja Dodaj obsługę platformy Docker. Projekty aplikacji konsolowych programu .NET Framework nie obsługują opcji Dodaj obsługę platformy Docker po utworzeniu projektu. Po utworzeniu zarówno projektów konsoli .NET Framework, jak i .NET Core obsługują opcję Dodaj obsługę orkiestratora kontenerów przy użyciu usługi Service Fabric lub narzędzia Docker Compose.

W programie Visual Studio 2019 w wersji 16.4 lub nowszej jest dostępne okno Kontenery , które umożliwia wyświetlanie uruchomionych kontenerów, przeglądanie dostępnych obrazów, wyświetlanie zmiennych środowiskowych, dzienników i mapowań portów, inspekcję systemu plików, dołączanie debugera lub otwieranie okna terminalu w środowisku kontenera. Zobacz Korzystanie z okna Kontenery.

Wymagania wstępne

Obsługa platformy Docker w programie Visual Studio

Obsługa platformy Docker jest dostępna dla projektów ASP.NET, projektów ASP.NET Core oraz projektów konsoli .NET Core i .NET Framework.

Obsługa platformy Docker w programie Visual Studio zmieniła się w wielu wersjach w odpowiedzi na potrzeby klientów. Istnieje kilka opcji dodawania obsługi platformy Docker do projektu, a obsługiwane opcje różnią się w zależności od typu projektu i wersji programu Visual Studio. W przypadku niektórych obsługiwanych typów projektów, jeśli chcesz tylko kontener dla pojedynczego projektu, bez używania aranżacji, możesz to zrobić, dodając obsługę platformy Docker. Następnym poziomem jest obsługa orkiestracji kontenerów, która dodaje odpowiednie pliki pomocy technicznej dla wybranego koordynatora.

W programie Visual Studio 2022 w wersji 17.9 lub nowszej po dodaniu obsługi platformy Docker do projektu platformy .NET 7 lub nowszego masz dwa typy kompilacji kontenerów do wyboru w celu dodania obsługi platformy Docker. Możesz dodać plik Dockerfile, aby określić sposób kompilowania obrazów kontenerów lub użyć wbudowanej obsługi kontenera udostępnianej przez zestaw SDK platformy .NET.

Ponadto w programie Visual Studio 2022 lub nowszym po wybraniu orkiestracji kontenerów można użyć narzędzia Docker Compose lub Service Fabric jako usług orkiestracji kontenerów.

Uwaga

Jeśli używasz pełnego szablonu projektu konsoli programu .NET Framework, obsługiwaną opcją jest dodanie obsługi orkiestratora kontenerów po utworzeniu projektu z opcjami używania usługi Service Fabric lub narzędzia Docker Compose. Dodanie obsługi tworzenia projektu i dodanie obsługi platformy Docker dla pojedynczego projektu bez orkiestracji nie jest dostępne.

W programie Visual Studio 2022 jest dostępne okno Kontenery , które umożliwia wyświetlanie uruchomionych kontenerów, przeglądanie dostępnych obrazów, wyświetlanie zmiennych środowiskowych, dzienników i mapowań portów, sprawdzanie systemu plików, dołączanie debugera lub otwieranie okna terminalu w środowisku kontenera. Zobacz Korzystanie z okna Kontenery.

Uwaga

Wymagania dotyczące licencjonowania platformy Docker mogą się różnić w przypadku różnych wersji programu Docker Desktop. Zapoznaj się z dokumentacją platformy Docker, aby zrozumieć bieżące wymagania licencyjne dotyczące korzystania z wersji programu Docker Desktop na potrzeby programowania w danej sytuacji.

Dodawanie obsługi platformy Docker

Obsługę platformy Docker można włączyć podczas tworzenia projektu, wybierając pozycję Włącz obsługę platformy Docker podczas tworzenia nowego projektu, jak pokazano na poniższym zrzucie ekranu:

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.

Uwaga

W przypadku projektów .NET Framework (nie .NET Core) dostępne są tylko kontenery systemu Windows.

Obsługę platformy Docker można dodać do istniejącego projektu, wybierając pozycję Dodaj>obsługę platformy Docker w Eksplorator rozwiązań. Polecenia Dodaj > obsługę platformy Docker i Dodaj > obsługę orkiestratora kontenerów znajdują się w menu prawym przyciskiem myszy (lub menu kontekstowym) węzła projektu dla projektu ASP.NET Core w Eksplorator rozwiązań, jak pokazano na poniższym zrzucie ekranu:

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

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

Dodawanie obsługi platformy Docker

Po dodaniu lub włączeniu obsługi platformy Docker program Visual Studio doda następujący kod do projektu:

  • plik Dockerfile
  • .dockerignore plik
  • odwołanie do pakietu NuGet do elementu Microsoft.VisualStudio.Azure.Containers.Tools.Targets

Dodany plik Dockerfile będzie podobny do poniższego kodu. W tym przykładzie projekt miał nazwę WebApplication-Dockeri wybrano kontenery systemu 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: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"]

Dodawanie obsługi platformy Docker przy użyciu typu kompilacji kontenera Dockerfile

Po dodaniu lub włączeniu obsługi platformy Docker w projekcie platformy .NET 7 lub nowszym program Visual Studio wyświetli okno dialogowe Opcje tworzenia szkieletu kontenera, co daje wybór systemu operacyjnego (Linux lub Windows), ale także możliwość wybierania typu kompilacji kontenera, pliku Dockerfile lub zestawu SDK platformy .NET.

Jeśli wybierzesz plik Dockerfile, program Visual Studio doda następujące elementy do projektu:

  • plik Dockerfile
  • plik .dockerignore
  • odwołanie do pakietu NuGet do elementu Microsoft.VisualStudio.Azure.Containers.Tools.Targets

Dodany plik Dockerfile będzie podobny do poniższego kodu. W tym przykładzie projekt miał nazwę WebApplication-Dockeri wybrano kontenery systemu 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: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"]

Dodawanie obsługi platformy Docker przy użyciu opcji zestawu SDK platformy .NET

W programie Visual Studio 2022 17.9 lub nowszym z zainstalowanym zestawem SDK platformy .NET 7 w projektach platformy ASP.NET Core przeznaczonych dla platformy .NET 6 lub nowszego masz możliwość korzystania z wbudowanej obsługi zestawu .NET SDK dla kompilacji kontenerów, co oznacza, że nie potrzebujesz pliku Dockerfile; zobacz Containerize a .NET app with dotnet publish (Konteneryzowanie aplikacji .NET za pomocą polecenia dotnet publish). Zamiast tego należy skonfigurować kontenery przy użyciu właściwości MSBuild w pliku projektu, a ustawienia uruchamiania kontenerów za pomocą programu Visual Studio są kodowane w .json pliku konfiguracji, uruchom Ustawienia.json.

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

Wpis kompilacji kontenera zestawu .NET SDK podczas uruchamiania Ustawienia.json wygląda jak następujący 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
}

Zestaw .NET SDK zarządza niektórymi opcjami, które zostałyby zakodowane w pliku Dockerfile, takimi jak obraz podstawowy kontenera wybrany do dopasowania docelowej wersji platformy .NET oraz zmienne środowiskowe do ustawienia. Ustawienia dostępne w pliku projektu dla konfiguracji kontenera są wyświetlane w temacie Dostosowywanie kontenera.

Korzystanie z okna Kontenery

Okno Kontenery umożliwia wyświetlanie kontenerów i obrazów na maszynie i sprawdzenie, co się z nimi dzieje. Można wyświetlić system plików, woluminy zainstalowane, zmienne środowiskowe, używane porty i zbadać pliki dziennika.

Otwórz okno Kontenery przy użyciu szybkiego uruchamiania (Ctrl+Q) i wpisz containerspolecenie . Możesz użyć kontrolek dokowania, aby umieścić okno gdzieś. Ze względu na szerokość okna działa najlepiej po zadokowaniu w dolnej części ekranu.

Wybierz kontener i użyj kart, aby wyświetlić dostępne informacje. Aby ją sprawdzić, uruchom aplikację z obsługą platformy Docker, otwórz kartę Pliki i rozwiń folder aplikacji , aby wyświetlić wdrożoną aplikację w kontenerze.

Screenshot of Containers window.

Screenshot of Containers window.

Aby uzyskać więcej informacji, zobacz Używanie okna Kontenery.

Obsługa narzędzia Docker Compose

Jeśli chcesz utworzyć rozwiązanie z wieloma kontenerami przy użyciu narzędzia Docker Compose, dodaj obsługę orkiestratora kontenerów do projektów. Umożliwia to uruchamianie i debugowanie grupy kontenerów (całego rozwiązania lub grupy projektów) w tym samym czasie, jeśli są one zdefiniowane w tym samym pliku docker-compose.yml .

Aby dodać obsługę orkiestratora kontenerów przy użyciu narzędzia Docker Compose, kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań, a następnie wybierz polecenie Dodaj > obsługę orkiestratora kontenerów. Następnie wybierz pozycję Docker Compose , aby zarządzać kontenerami.

Po dodaniu obsługi orkiestratora kontenerów do projektu zobaczysz plik Dockerfile dodany do projektu (jeśli jeszcze go nie istnieje) i folder docker-compose dodany do rozwiązania w Eksplorator rozwiązań, jak pokazano poniżej:

Screenshot of Docker files in Solution Explorer in Visual Studio.

Screenshot of Docker files in Solution Explorer in Visual Studio.

Jeśli docker-compose.yml już istnieje, program Visual Studio dodaje do niego tylko wymagane wiersze kodu konfiguracji.

Powtórz proces z innymi projektami, które chcesz kontrolować przy użyciu narzędzia Docker Compose.

Jeśli pracujesz z dużą liczbą usług, możesz zaoszczędzić czas i zasoby obliczeniowe, wybierając podzbiór usług, które chcesz rozpocząć w sesji debugowania. Zobacz Uruchamianie podzestawu usług Compose.

Uwaga

Należy pamiętać, że zdalne hosty platformy Docker nie są obsługiwane w narzędziach programu Visual Studio.

Obsługa usługi Service Fabric

Za pomocą narzędzi usługi Service Fabric w programie Visual Studio można opracowywać i debugować usługę Azure Service Fabric, uruchamiać i debugować lokalnie oraz wdrażać na platformie Azure.

Program Visual Studio 2019 lub nowszy obsługują tworzenie konteneryzowanych mikrousług przy użyciu kontenerów systemu Windows i orkiestracji usługi Service Fabric.

Aby uzyskać szczegółowy samouczek, zobacz Samouczek: wdrażanie aplikacji .NET w kontenerze systemu Windows w usłudze Azure Service Fabric.

Aby uzyskać więcej informacji na temat usługi Azure Service Fabric, zobacz Service Fabric.

Ciągłe dostarczanie i ciągła integracja (CI/CD)

Program Visual Studio łatwo integruje się z usługą Azure Pipelines w celu zautomatyzowanej i ciągłej integracji oraz dostarczania zmian w kodzie i konfiguracji usługi. Aby rozpocząć, zobacz Tworzenie pierwszego potoku.

Aby zapoznać się z usługą Service Fabric, zobacz Samouczek: wdrażanie aplikacji ASP.NET Core w usłudze Azure Service Fabric przy użyciu usługi Azure DevOps Projects.

Następne kroki

Aby uzyskać więcej informacji na temat implementacji usług i używania narzędzi programu Visual Studio do pracy z kontenerami, przeczytaj następujące artykuły:

Debugowanie aplikacji w lokalnym kontenerze platformy Docker

Wdrażanie kontenera ASP.NET w rejestrze kontenerów przy użyciu programu Visual Studio