Szybki Start: Docker w programie Visual StudioQuickstart: Docker in Visual Studio

Program Visual Studio umożliwia łatwe tworzenie, debugowanie i uruchamianie kontenerów ASP.NET Core aplikacji oraz publikowanie ich w usłudze Azure Container Registry (ACR), Docker Hub, Azure App Service lub własnym rejestrze kontenerów.With Visual Studio, you can easily build, debug, and run containerized ASP.NET Core apps and publish them to Azure Container Registry (ACR), Docker Hub, Azure App Service, or your own container registry. W tym artykule opublikujemy ACR.In this article, we'll publish to ACR.

Wymagania wstępnePrerequisites

Instalacja i konfiguracjaInstallation and setup

W przypadku instalacji platformy Docker najpierw przejrzyj informacje na pulpicie Docker dla systemu Windows: co należy wiedzieć przed zainstalowaniemprogramu.For Docker installation, first review the information at Docker Desktop for Windows: What to know before you install. Następnie zainstaluj program Docker Desktop.Next, install Docker Desktop.

Dodawanie projektu do kontenera platformy DockerAdd a project to a Docker container

  1. Z menu programu Visual Studio wybierz pozycję plik > nowy > projekt.From the Visual Studio menu, select File > New > Project.

  2. W sekcji Szablony okna dialogowego Nowy projekt wybierz pozycję Visual C# > Web.Under the Templates section of the New Project dialog box, select Visual C# > Web.

  3. Wybierz ASP.NET Core aplikację sieci Web lub jeśli chcesz użyć .NET Framework zamiast programu .NET Core, wybierz pozycję aplikacja sieci Web ASP.NET.Select ASP.NET Core Web Application or if you want to use the .NET Framework instead of .NET Core, select ASP.NET Web Application.

  4. Nadaj nowej aplikacji nazwę (lub wybierz ją domyślną), a następnie kliknij przycisk OK.Give your new application a name (or take the default) and select OK.

  5. Wybierz pozycję aplikacja sieci Web.Select Web Application.

  6. Zaznacz pole wyboru Włącz obsługę platformy Docker .Check the Enable Docker Support checkbox.

    Pole wyboru Włącz obsługę platformy Docker

    Zrzut ekranu przedstawia platformę .NET Core; Jeśli używasz .NET Framework, wygląda to nieco inaczej.The screenshot shows .NET Core; if you're using .NET Framework, it looks a bit different.

  7. Wybierz odpowiedni typ kontenera (system Windows lub Linux), a następnie kliknij przycisk OK.Select the type of container you want (Windows or Linux) and click OK.

Plik Dockerfile — przeglądDockerfile overview

Pliku dockerfile, przepis dotyczący tworzenia końcowego obrazu platformy Docker, jest tworzony w projekcie.A Dockerfile, the recipe for creating a final Docker image, is created in the project. Zapoznaj się z dokumentacją pliku dockerfile , aby zrozumieć polecenia w nim.:Refer to Dockerfile reference for an understanding of the commands within it.:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 59518
EXPOSE 44364

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY HelloDockerTools/HelloDockerTools.csproj HelloDockerTools/
RUN dotnet restore HelloDockerTools/HelloDockerTools.csproj
COPY . .
WORKDIR /src/HelloDockerTools
RUN dotnet build HelloDockerTools.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish HelloDockerTools.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "HelloDockerTools.dll"]

Poprzedni pliku dockerfile opiera się na obrazie Microsoft/aspnetcore i zawiera instrukcje dotyczące modyfikowania obrazu podstawowego przez skompilowanie projektu i dodanie go do kontenera.The preceding Dockerfile is based on the microsoft/aspnetcore image, and includes instructions for modifying the base image by building your project and adding it to the container. Jeśli używasz .NET Framework, obraz podstawowy będzie różny.If you're using the .NET Framework, the base image will be different.

Jeśli w oknie dialogowym nowego projektu zostanie zaznaczone pole wyboru Konfiguruj dla protokołu HTTPS, plik Dockerfile uwidacznia dwa porty.When the new project dialog's Configure for HTTPS check box is checked, the Dockerfile exposes two ports. Jeden port jest używany na potrzeby ruchu HTTP, a drugi na potrzeby protokołu HTTPS.One port is used for HTTP traffic; the other port is used for HTTPS. Jeśli to pole wyboru nie zostanie zaznaczone, dla ruchu HTTP zostanie uwidoczniony pojedynczy port (80).If the check box isn't checked, a single port (80) is exposed for HTTP traffic.

DebugowanieDebug

Wybierz pozycję Docker z listy rozwijanej debugowania na pasku narzędzi i rozpocznij debugowanie aplikacji.Select Docker from the debug drop-down in the toolbar, and start debugging the app. Może pojawić się komunikat z monitem o zaufać certyfikatowi; Wybierz relację zaufania certyfikatu, aby kontynuować.You might see a message with a prompt about trusting a certificate; choose to trust the certificate to continue.

Okno dane wyjściowe pokazuje, jakie akcje są wykonywane.The Output window shows what actions are taking place.

Otwórz konsolę Menedżera pakietów (PMC) z menu Narzędzia ,> Menedżer pakietów NuGet, konsola Menedżera pakietów.Open the Package Manager Console (PMC) from the menu Tools> NuGet Package Manager, Package Manager Console.

Wynikowy obraz platformy Docker aplikacji jest oznaczony tagiem dev.The resulting Docker image of the app is tagged as dev. Obraz bazuje na tagu 2.1-aspnetcore-runtime obrazu podstawowego microsoft/dotnet.The image is based on the 2.1-aspnetcore-runtime tag of the microsoft/dotnet base image. Uruchom polecenie docker images w oknie konsoli menedżera pakietów (PMC).Run the docker images command in the Package Manager Console (PMC) window. Na komputerze są wyświetlane następujące obrazy:The images on the machine are displayed:

REPOSITORY        TAG                     IMAGE ID      CREATED         SIZE
hellodockertools  dev                     d72ce0f1dfe7  30 seconds ago  255MB
microsoft/dotnet  2.1-aspnetcore-runtime  fcc3887985bb  6 days ago      255MB

Uwaga

Obraz deweloperski nie zawiera plików binarnych aplikacji i innych zawartości, ponieważ konfiguracje debugowania używają funkcji instalacji woluminu, aby zapewnić iteracyjne edytowanie i debugowanie.The dev image does not contain the app binaries and other content, as Debug configurations use volume mounting to provide the iterative edit and debug experience. Aby utworzyć obraz produkcyjny zawierający całą zawartość, użyj konfiguracji wydania .To create a production image containing all contents, use the Release configuration.

Uruchom polecenie docker ps w konsoli PMC.Run the docker ps command in PMC. Zauważ, że aplikacja działa przy użyciu kontenera:Notice the app is running using the container:

CONTAINER ID        IMAGE                  COMMAND                   CREATED             STATUS              PORTS                   NAMES
baf9a678c88d        hellodockertools:dev   "C:\\remote_debugge..."   21 seconds ago      Up 19 seconds       0.0.0.0:37630->80/tcp   dockercompose4642749010770307127_hellodockertools_1

Publikowanie obrazów platformy DockerPublish Docker images

Po zakończeniu cyklu opracowywania i debugowania aplikacji można utworzyć obraz produkcyjny aplikacji.Once the develop and debug cycle of the app is completed, you can create a production image of the app.

  1. Zmień opcję listy rozwijanej konfiguracji na Wydanie i skompiluj aplikację.Change the configuration drop-down to Release and build the app.

  2. Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Publikuj.Right-click your project in Solution Explorer and choose Publish.

  3. W oknie dialogowym Publikowanie elementu docelowego wybierz kartę Container Registry .On the publish target dialog, select the Container Registry tab.

  4. Wybierz pozycję Utwórz nowe Azure Container Registry a następnie kliknij przycisk Publikuj.Choose Create New Azure Container Registry and click Publish.

  5. Wypełnij odpowiednie wartości w polu Utwórz nową Azure Container Registry.Fill in your desired values in the Create a new Azure Container Registry.

    UstawienieSetting Sugerowana wartośćSuggested value OpisDescription
    Prefiks DNSDNS Prefix Nazwa unikatowa w skali globalnejGlobally unique name Nazwa, która jednoznacznie identyfikuje rejestr kontenerów.Name that uniquely identifies your container registry.
    SubskrypcjaSubscription Wybierz subskrypcjęChoose your subscription Subskrypcja platformy Azure, która ma być używana.The Azure subscription to use.
    Grupa zasobówResource Group myResourceGroupmyResourceGroup Nazwa grupy zasobów, w której ma zostać utworzony rejestr kontenerów.Name of the resource group in which to create your container registry. Wybierz pozycję Nowa, aby utworzyć nową grupę zasobów.Choose New to create a new resource group.
    SKUSKU StandardStandard Warstwa usług w rejestrze kontenerówService tier of the container registry
    Lokalizacja rejestruRegistry Location Lokalizacja blisko CiebieA location close to you Wybierz lokalizację w regionie blisko siebie lub w najbliższej innej usłudze, która będzie korzystać z rejestru kontenerów.Choose a Location in a region near you or near other services that will use your container registry.

    Okno dialogowe tworzenia Azure Container Registry programu Visual Studio

  6. Kliknij pozycję UtwórzClick Create

Następne krokiNext steps

Teraz można ściągnąć kontener z rejestru do dowolnego hosta, który może uruchamiać obrazy platformy Docker, na przykład Azure Container Instances.You can now pull the container from the registry to any host capable of running Docker images, for example Azure Container Instances.

Za pomocą programu Visual Studio można łatwo kompilować, debugować i uruchamiać kontenery .NET, ASP.NET i ASP.NET Core aplikacje oraz publikować je w Azure Container Registry (ACR), Docker Hub, Azure App Service lub własnym rejestrze kontenerów.With Visual Studio, you can easily build, debug, and run containerized .NET, ASP.NET, and ASP.NET Core apps and publish them to Azure Container Registry (ACR), Docker Hub, Azure App Service, or your own container registry. W tym artykule opublikujemy aplikację ASP.NET Core w ACR.In this article, we'll publish an ASP.NET Core app to ACR.

Wymagania wstępnePrerequisites

Instalacja i konfiguracjaInstallation and setup

W przypadku instalacji platformy Docker najpierw przejrzyj informacje na pulpicie Docker dla systemu Windows: co należy wiedzieć przed zainstalowaniemprogramu.For Docker installation, first review the information at Docker Desktop for Windows: What to know before you install. Następnie zainstaluj program Docker Desktop.Next, install Docker Desktop.

Dodawanie projektu do kontenera platformy DockerAdd a project to a Docker container

  1. Utwórz nowy projekt za pomocą szablonu aplikacji sieci web ASP.NET Core lub jeśli chcesz użyć .NET Framework zamiast programu .NET Core, wybierz pozycję ASP.NET Web Application (.NET Framework).Create a new project using the ASP.NET Core Web Application template or if you want to use the .NET Framework instead of .NET Core, choose ASP.NET Web Application (.NET Framework).

  2. Wybierz pozycję aplikacja sieci Webi upewnij się, że pole wyboru Włącz obsługę platformy Docker jest zaznaczone.Select Web Application, and make sure the Enable Docker Support checkbox is selected.

    Pole wyboru Włącz obsługę platformy Docker

    Zrzut ekranu przedstawia platformę .NET Core; Jeśli używasz .NET Framework, wygląda to nieco inaczej.The screenshot shows .NET Core; if you're using .NET Framework, it looks a bit different.

  3. Wybierz odpowiedni typ kontenera (system Windows lub Linux), a następnie kliknij przycisk Utwórz.Select the type of container you want (Windows or Linux) and click Create.

Plik Dockerfile — przeglądDockerfile overview

Pliku dockerfile, przepis dotyczący tworzenia końcowego obrazu platformy Docker, jest tworzony w projekcie.A Dockerfile, the recipe for creating a final Docker image, is created in the project. Zapoznaj się z dokumentacją pliku dockerfile , aby zrozumieć polecenia w nim.:Refer to Dockerfile reference for an understanding of the commands within it.:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-nanoserver-1903 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-nanoserver-1903 AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

Poprzedni pliku dockerfile opiera się na obrazie Microsoft/aspnetcore i zawiera instrukcje dotyczące modyfikowania obrazu podstawowego przez skompilowanie projektu i dodanie go do kontenera.The preceding Dockerfile is based on the microsoft/aspnetcore image, and includes instructions for modifying the base image by building your project and adding it to the container. Jeśli używasz .NET Framework, obraz podstawowy będzie różny.If you're using the .NET Framework, the base image will be different.

Jeśli w oknie dialogowym nowego projektu zostanie zaznaczone pole wyboru Konfiguruj dla protokołu HTTPS, plik Dockerfile uwidacznia dwa porty.When the new project dialog's Configure for HTTPS check box is checked, the Dockerfile exposes two ports. Jeden port jest używany na potrzeby ruchu HTTP, a drugi na potrzeby protokołu HTTPS.One port is used for HTTP traffic; the other port is used for HTTPS. Jeśli to pole wyboru nie zostanie zaznaczone, dla ruchu HTTP zostanie uwidoczniony pojedynczy port (80).If the check box isn't checked, a single port (80) is exposed for HTTP traffic.

DebugowanieDebug

Wybierz pozycję Docker z listy rozwijanej debugowania na pasku narzędzi i rozpocznij debugowanie aplikacji.Select Docker from the debug drop-down in the toolbar, and start debugging the app. Może pojawić się komunikat z monitem o zaufać certyfikatowi; Wybierz relację zaufania certyfikatu, aby kontynuować.You might see a message with a prompt about trusting a certificate; choose to trust the certificate to continue.

Opcja Narzędzia kontenera w oknie danych wyjściowych pokazuje, jakie akcje są wykonywane.The Container Tools option in the Output window shows what actions are taking place. Po raz pierwszy pobranie obrazu podstawowego może potrwać trochę czasu, ale jest to znacznie szybsze w kolejnych uruchomieniach.The first time, it might take a while to download the base image, but it's much faster on subsequent runs.

Uwaga

Jeśli musisz zmienić porty na potrzeby debugowania, możesz to zrobić w launchSettings.js pliku.If you need to change ports for debugging, you can do that in the launchSettings.json file. Zobacz Ustawienia uruchamiania kontenera.See Container Launch Settings.

Okno kontenerówContainers window

Jeśli masz program Visual Studio 2019 w wersji 16,4 lub nowszej, możesz użyć okna kontenery do wyświetlania uruchomionych kontenerów na swoim komputerze, a także dostępnych obrazów.If you have Visual Studio 2019 version 16.4 or later, you can use the Containers window to view running containers on your machine, as well as images that you have available.

Otwórz okno kontenery przy użyciu pola wyszukiwania w IDE (naciśnij klawisz Ctrl + Q , aby go użyć), wpisz w container i wybierz z listy okno kontenery .Open the Containers window by using the search box in the IDE (press Ctrl+Q to use it), type in container, and choose the Containers window from the list.

Możesz zainstalować okno kontenery w wygodnym miejscu, takim jak poniżej edytora, przenosząc je wokół i postępując zgodnie z przewodnikiem umieszczania okna.You can mount the Containers window in a convenient place, such as below the editor, by moving it around and following the window placement guides.

W oknie Znajdź kontener i przejdź na każdą kartę, aby wyświetlić zmienne środowiskowe, mapowania portów, dzienniki i system plików.In the window, find your container and step through each tab to view the environment variables, port mappings, logs, and the filesystem.

Zrzut ekranu okna kontenerów

Aby uzyskać więcej informacji, zobacz Wyświetlanie i diagnozowanie kontenerów i obrazów w programie Visual Studio.For more information, see View and diagnose containers and images in Visual Studio.

Publikowanie obrazów platformy DockerPublish Docker images

Po zakończeniu cyklu opracowywania i debugowania aplikacji można utworzyć obraz produkcyjny aplikacji.Once the develop and debug cycle of the app is completed, you can create a production image of the app.

  1. Zmień opcję listy rozwijanej konfiguracji na Wydanie i skompiluj aplikację.Change the configuration drop-down to Release and build the app.

  2. Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań i wybierz polecenie Publikuj.Right-click your project in Solution Explorer and choose Publish.

  3. W oknie dialogowym Publikowanie wybierz kartę Docker Container Registry .On the Publish dialog, select the Docker Container Registry tab.

    Zrzut ekranu przedstawiający okno dialogowe publikowania — wybierz Container Registry Docker

  4. Wybierz pozycję Utwórz nowe Azure Container Registry.Choose Create New Azure Container Registry.

    Zrzut ekranu przedstawiający okno dialogowe publikowania — wybierz pozycję Utwórz nowy Azure Container Registry

  5. Wypełnij odpowiednie wartości w polu Utwórz nową Azure Container Registry.Fill in your desired values in the Create a new Azure Container Registry.

    UstawienieSetting Sugerowana wartośćSuggested value OpisDescription
    Prefiks DNSDNS Prefix Nazwa unikatowa w skali globalnejGlobally unique name Nazwa, która jednoznacznie identyfikuje rejestr kontenerów.Name that uniquely identifies your container registry.
    SubskrypcjaSubscription Wybierz subskrypcjęChoose your subscription Subskrypcja platformy Azure, która ma być używana.The Azure subscription to use.
    Grupa zasobówResource Group myResourceGroupmyResourceGroup Nazwa grupy zasobów, w której ma zostać utworzony rejestr kontenerów.Name of the resource group in which to create your container registry. Wybierz pozycję Nowa, aby utworzyć nową grupę zasobów.Choose New to create a new resource group.
    SKUSKU StandardStandard Warstwa usług w rejestrze kontenerówService tier of the container registry
    Lokalizacja rejestruRegistry Location Lokalizacja blisko CiebieA location close to you Wybierz lokalizację w regionie blisko siebie lub w najbliższej innej usłudze, która będzie korzystać z rejestru kontenerów.Choose a Location in a region near you or near other services that will use your container registry.

    Okno dialogowe tworzenia Azure Container Registry programu Visual Studio

  6. Kliknij przycisk Utwórz.Click Create. W oknie dialogowym publikowania zostanie wyświetlony utworzony rejestr.The Publish dialog now shows the created registry.

    Zrzut ekranu przedstawiający okno dialogowe publikowania z utworzonymi Azure Container Registry

  7. Wybierz przycisk Zakończ , aby zakończyć proces publikowania obrazu kontenera do nowo utworzonego rejestru na platformie Azure.Choose Finish to complete the process of publishing your container image to the newly created registry in Azure.

    Zrzut ekranu przedstawiający pomyślne publikowanie

Następne krokiNext Steps

Teraz można ściągnąć kontener z rejestru do dowolnego hosta, który może uruchamiać obrazy platformy Docker, na przykład Azure Container Instances.You can now pull the container from the registry to any host capable of running Docker images, for example Azure Container Instances.

Zasoby dodatkoweAdditional resources