Schnellstart: Docker in Visual StudioQuickstart: Docker in Visual Studio

Mit Visual Studio können Sie ASP.NET Core-Apps in Containern mühelos erstellen, debuggen, ausführen und anschließend in Azure Container Registry (ACR), Docker Hub, Azure App Service oder Ihrer eigenen Containerregistrierung veröffentlichen.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. In diesem Artikel wird die Veröffentlichung in ACR veranschaulicht.In this article, we'll publish to ACR.

VoraussetzungenPrerequisites

Installation und EinrichtungInstallation and setup

Lesen Sie vor der Installation von Docker zunächst Docker Desktop for Windows: What to know before you install (Docker Desktop für Windows: Was vor der Installation zu beachten ist).For Docker installation, first review the information at Docker Desktop for Windows: What to know before you install. Installieren Sie anschließend Docker Desktop.Next, install Docker Desktop.

Hinzufügen eines Projekts zu einem Docker-ContainerAdd a project to a Docker container

  1. Wählen Sie im Menü von Visual Studio Datei > Neu > Projekt aus.From the Visual Studio menu, select File > New > Project.

  2. Wählen Sie im Abschnitt Vorlagen des Dialogfelds Neues Projekt die Option Visual C# > Web aus.Under the Templates section of the New Project dialog box, select Visual C# > Web.

  3. Wählen Sie die ASP.NET Core-Webanwendung aus. Wenn Sie statt .NET Core lieber .NET Framework verwenden möchten, wählen Sie die ASP.NET-Webanwendungs aus.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. Weisen Sie Ihrer neuen Anwendung einen Namen zu (oder übernehmen Sie den Standardnamen), und wählen Sie OKaus.Give your new application a name (or take the default) and select OK.

  5. Wählen Sie Webanwendung aus.Select Web Application.

  6. Aktivieren Sie das Kontrollkästchen Docker-Unterstützung aktivieren.Check the Enable Docker Support checkbox.

    Kontrollkästchen „Enable Docker Support“ (Docker-Unterstützung aktivieren)

    Im Screenshot wird .NET Core verwendet. Mit .NET Framework sieht der Bildschirm etwas anders aus.The screenshot shows .NET Core; if you're using .NET Framework, it looks a bit different.

  7. Wählen Sie den gewünschten Containertyp (Windows oder Linux), und klicken Sie auf OK.Select the type of container you want (Windows or Linux) and click OK.

Übersicht über die Dockerfile-DateiDockerfile overview

Eine Dockerfile-Datei, der wichtigste Bestandteil beim Erstellen eines endgültigen Docker-Images, wird im Projekt erstellt.A Dockerfile, the recipe for creating a final Docker image, is created in the project. Einen Überblick über die enthaltenen Befehle finden Sie in der Dockerfile-Referenz: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"]

Das obige Dockerfile basiert auf dem Image microsoft/aspnetcore und enthält Anweisungen zum Anpassen des Basisimages durch Erstellen Ihres Projekts und anschließendem Hinzufügen zum Container.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. Wenn Sie .NET Framework verwenden, unterscheidet sich das Basisimage.If you're using the .NET Framework, the base image will be different.

Wenn im neuen Projektdialogfeld das Kontrollkästchen Configure for HTTPS (Für HTTPS konfigurieren) aktiviert ist, werden durch die Dockerfile-Datei zwei Ports verfügbar gemacht.When the new project dialog's Configure for HTTPS check box is checked, the Dockerfile exposes two ports. Ein Port wird für den HTTP-Datenverkehr, der andere für HTTPS verwendet.One port is used for HTTP traffic; the other port is used for HTTPS. Wenn dieses Kontrollkästchen nicht aktiviert ist, wird nur der Port 80 für den HTTP-Datenverkehr verfügbar gemacht.If the check box isn't checked, a single port (80) is exposed for HTTP traffic.

DebugDebug

Wählen Sie in der Symbolleiste im Dropdownmenü „Debuggen“ die Option Docker aus, und starten Sie das Debuggen der Anwendung.Select Docker from the debug drop-down in the toolbar, and start debugging the app. Möglicherweise wird eine Meldung mit einer Eingabeaufforderung zum Vertrauen eines Zertifikats angezeigt. Vertrauen Sie dem Zertifikat, um fortzufahren.You might see a message with a prompt about trusting a certificate; choose to trust the certificate to continue.

Im Ausgabefenster wird gezeigt, welche Aktionen ausgeführt werden.The Output window shows what actions are taking place.

Öffnen Sie die Paket-Manager-Konsole über das Menü Extras> NuGet-Paket-Manager > Paket-Manager-Konsole.Open the Package Manager Console (PMC) from the menu Tools> NuGet Package Manager, Package Manager Console.

Das resultierende Docker-Image der App wird mit dem Tag dev versehen.The resulting Docker image of the app is tagged as dev. Das Image basiert auf dem Tag 2.1-aspnetcore-runtime des Basisimages microsoft/dotnet.The image is based on the 2.1-aspnetcore-runtime tag of the microsoft/dotnet base image. Führen Sie im Fenster Paket-Manager-Konsole den Befehl docker images aus.Run the docker images command in the Package Manager Console (PMC) window. Die Images auf dem Computer werden angezeigt: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

Hinweis

Das dev-Image enthält weder die Binärdateien der App noch andere Inhalte, da die Debugkonfigurationen die Volumebereitstellung nutzen, um die iterativen Bearbeitungs- und Debugfunktionen bereitzustellen.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. Verwenden Sie die Releasekonfiguration, um ein Produktionsimage zu erstellen, das alle Inhalte enthält.To create a production image containing all contents, use the Release configuration.

Führen Sie in der Paket-Manager-Konsole den Befehl docker ps aus.Run the docker ps command in PMC. Beachten Sie, dass die App mithilfe des Containers ausgeführt wird: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

Veröffentlichen von Docker-ImagesPublish Docker images

Sobald der Entwicklungs- und Debugzyklus der App abgeschlossen ist, können Sie ein Produktionsimage der App erstellen.Once the develop and debug cycle of the app is completed, you can create a production image of the app.

  1. Wählen Sie im Dropdownmenü „Konfiguration“ die Option Release aus, und erstellen Sie die App.Change the configuration drop-down to Release and build the app.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen.Right-click your project in Solution Explorer and choose Publish.

  3. Wählen Sie im Dialogfeld „Ziel veröffentlichen“ die Registerkarte Container Registry.On the publish target dialog, select the Container Registry tab.

  4. Klicken Sie auf Neue Azure Container Registry-Instanz erstellen, und klicken Sie dann auf Veröffentlichen.Choose Create New Azure Container Registry and click Publish.

  5. Geben Sie die gewünschten Werte im Feld Neue Azure-Containerregistrierung erstellen ein.Fill in your desired values in the Create a new Azure Container Registry.

    EinstellungSetting Empfohlener WertSuggested value BeschreibungDescription
    DNS-PräfixDNS Prefix Global eindeutiger NameGlobally unique name Name, der Ihre Containerregistrierung eindeutig identifiziert.Name that uniquely identifies your container registry.
    AbonnementSubscription Auswählen Ihres AbonnementsChoose your subscription Das zu verwendende Azure-Abonnement.The Azure subscription to use.
    RessourcengruppeResource Group myResourceGroupmyResourceGroup Name der Ressourcengruppe, in der die Containerregistrierung erstellt werden soll.Name of the resource group in which to create your container registry. Wählen Sie Neu aus, um eine neue Ressourcengruppe zu erstellen.Choose New to create a new resource group.
    SKUSKU StandardStandard Dienstebene der ContainerregistrierungService tier of the container registry
    RegistrierungsstandortRegistry Location Ein Standort in Ihrer NäheA location close to you Wählen Sie einen Standort in einer Region in Ihrer Nähe oder in der Nähe anderer Dienste aus, die Ihre Containerregistrierung verwenden werden.Choose a Location in a region near you or near other services that will use your container registry.

    Visual Studio-Dialogfeld zum Erstellen einer Azure-Containerregistrierung

  6. Klicken Sie auf ErstellenClick Create

Nächste SchritteNext steps

Sie können jetzt den Container aus der Registrierung auf einen beliebigen Host ziehen, auf dem Docker-Images ausgeführt werden können. Beispiel: 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.

Mit Visual Studio können Sie .NET-, ASP.NET- und ASP.NET Core-Apps in Containern mühelos erstellen, debuggen, ausführen und anschließend in Azure Container Registry (ACR), Docker Hub, Azure App Service oder Ihrer eigenen Containerregistrierung veröffentlichen.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. In diesem Artikel veröffentlichen wir eine ASP.NET Core-App in ACR.In this article, we'll publish an ASP.NET Core app to ACR.

VoraussetzungenPrerequisites

Installation und EinrichtungInstallation and setup

Lesen Sie vor der Installation von Docker zunächst Docker Desktop for Windows: What to know before you install (Docker Desktop für Windows: Was vor der Installation zu beachten ist).For Docker installation, first review the information at Docker Desktop for Windows: What to know before you install. Installieren Sie anschließend Docker Desktop.Next, install Docker Desktop.

Hinzufügen eines Projekts zu einem Docker-ContainerAdd a project to a Docker container

  1. Erstellen Sie mithilfe der Vorlage ASP.NET Core-Webanwendung ein neues Projekt. Wenn Sie statt .NET Core lieber .NET Framework verwenden möchten, wählen Sie ASP.NET Web Application (.NET Framework) (ASP.NET-Webanwendung [.NET Framework]) aus.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. Klicken Sie auf Webanwendung, und stellen Sie sicher, dass das Kontrollkästchen neben Docker-Unterstützung aktivieren aktiviert ist.Select Web Application, and make sure the Enable Docker Support checkbox is selected.

    Kontrollkästchen „Enable Docker Support“ (Docker-Unterstützung aktivieren)

    Im Screenshot wird .NET Core verwendet. Mit .NET Framework sieht der Bildschirm etwas anders aus.The screenshot shows .NET Core; if you're using .NET Framework, it looks a bit different.

  3. Wählen Sie den gewünschten Containertyp aus (Windows oder Linux), und klicken Sie auf Erstellen.Select the type of container you want (Windows or Linux) and click Create.

Übersicht über die Dockerfile-DateiDockerfile overview

Eine Dockerfile-Datei, der wichtigste Bestandteil beim Erstellen eines endgültigen Docker-Images, wird im Projekt erstellt.A Dockerfile, the recipe for creating a final Docker image, is created in the project. Einen Überblick über die enthaltenen Befehle finden Sie in der Dockerfile-Referenz: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"]

Das obige Dockerfile basiert auf dem Image microsoft/aspnetcore und enthält Anweisungen zum Anpassen des Basisimages durch Erstellen Ihres Projekts und anschließendem Hinzufügen zum Container.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. Wenn Sie .NET Framework verwenden, unterscheidet sich das Basisimage.If you're using the .NET Framework, the base image will be different.

Wenn im neuen Projektdialogfeld das Kontrollkästchen Configure for HTTPS (Für HTTPS konfigurieren) aktiviert ist, werden durch die Dockerfile-Datei zwei Ports verfügbar gemacht.When the new project dialog's Configure for HTTPS check box is checked, the Dockerfile exposes two ports. Ein Port wird für den HTTP-Datenverkehr, der andere für HTTPS verwendet.One port is used for HTTP traffic; the other port is used for HTTPS. Wenn dieses Kontrollkästchen nicht aktiviert ist, wird nur der Port 80 für den HTTP-Datenverkehr verfügbar gemacht.If the check box isn't checked, a single port (80) is exposed for HTTP traffic.

DebugDebug

Wählen Sie in der Symbolleiste im Dropdownmenü „Debuggen“ die Option Docker aus, und starten Sie das Debuggen der Anwendung.Select Docker from the debug drop-down in the toolbar, and start debugging the app. Möglicherweise wird eine Meldung mit einer Eingabeaufforderung zum Vertrauen eines Zertifikats angezeigt. Vertrauen Sie dem Zertifikat, um fortzufahren.You might see a message with a prompt about trusting a certificate; choose to trust the certificate to continue.

Die Option Containertools im Fenster Ausgabe zeigt, welche Aktionen ausgeführt werden.The Container Tools option in the Output window shows what actions are taking place. Beim ersten Mal kann der Download des Basisimages einige Zeit dauern. Bei nachfolgenden Ausführungen geht es aber deutlich schneller.The first time, it might take a while to download the base image, but it's much faster on subsequent runs.

Hinweis

Wenn Sie die Ports zum Debuggen ändern müssen, können Sie diese Änderungen in der Datei launchSettings.json vornehmen.If you need to change ports for debugging, you can do that in the launchSettings.json file. Weitere Informationen dazu finden Sie unter Containerstarteinstellungen.See Container Launch Settings.

Fenster „Container“Containers window

Wenn Sie Visual Studio 2019 Version 16.4 oder höher besitzen, können Sie über das Fenster Container die auf Ihrem Computer ausgeführten Container und verfügbare Images anzeigen.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.

Öffnen Sie das Fenster Container über das Suchfeld in der IDE (drücken Sie STRG+Q), geben Sie container ein, und wählen Sie Container aus der Liste aus.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.

Sie können das Fenster Container an einen beliebigen Ort verschieben, z. B. unter den Editor, indem Sie es bewegen und auf die Platzierungshinweise für Fenster achten.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.

Suchen Sie im Fenster Ihren Container, und sehen Sie sich jede Registerkarte an, um die Umgebungsvariablen, Portzuordnungen, Protokolle und das Dateisystem anzuzeigen.In the window, find your container and step through each tab to view the environment variables, port mappings, logs, and the filesystem.

Screenshot des Fensters „Container“

Weitere Informationen finden Sie unter Anzeigen und Diagnostizieren von Containern und Images in Visual Studio.For more information, see View and diagnose containers and images in Visual Studio.

Veröffentlichen von Docker-ImagesPublish Docker images

Sobald der Entwicklungs- und Debugzyklus der App abgeschlossen ist, können Sie ein Produktionsimage der App erstellen.Once the develop and debug cycle of the app is completed, you can create a production image of the app.

  1. Wählen Sie im Dropdownmenü „Konfiguration“ die Option Release aus, und erstellen Sie die App.Change the configuration drop-down to Release and build the app.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen.Right-click your project in Solution Explorer and choose Publish.

  3. Wählen Sie im Dialogfeld Veröffentlichen die Registerkarte Docker-Containerregistrierung aus.On the Publish dialog, select the Docker Container Registry tab.

    Screenshot des Dialogfelds „Veröffentlichen“: Auswählen von „Docker-Containerregistrierung“

  4. Wählen Sie Neue Azure Container Registry-Instanz erstellen.Choose Create New Azure Container Registry.

    Screenshot des Dialogfelds „Veröffentlichen“: Auswählen von „Neue Azure Container Registry erstellen“

  5. Geben Sie die gewünschten Werte im Feld Neue Azure-Containerregistrierung erstellen ein.Fill in your desired values in the Create a new Azure Container Registry.

    EinstellungSetting Empfohlener WertSuggested value BeschreibungDescription
    DNS-PräfixDNS Prefix Global eindeutiger NameGlobally unique name Name, der Ihre Containerregistrierung eindeutig identifiziert.Name that uniquely identifies your container registry.
    AbonnementSubscription Auswählen Ihres AbonnementsChoose your subscription Das zu verwendende Azure-Abonnement.The Azure subscription to use.
    RessourcengruppeResource Group myResourceGroupmyResourceGroup Name der Ressourcengruppe, in der die Containerregistrierung erstellt werden soll.Name of the resource group in which to create your container registry. Wählen Sie Neu aus, um eine neue Ressourcengruppe zu erstellen.Choose New to create a new resource group.
    SKUSKU StandardStandard Dienstebene der ContainerregistrierungService tier of the container registry
    RegistrierungsstandortRegistry Location Ein Standort in Ihrer NäheA location close to you Wählen Sie einen Standort in einer Region in Ihrer Nähe oder in der Nähe anderer Dienste aus, die Ihre Containerregistrierung verwenden werden.Choose a Location in a region near you or near other services that will use your container registry.

    Visual Studio-Dialogfeld zum Erstellen einer Azure-Containerregistrierung

  6. Klicken Sie auf Erstellen.Click Create. Im Dialogfeld Veröffentlichen wird jetzt die erstellte Registrierung angezeigt.The Publish dialog now shows the created registry.

    Screenshot des Dialogfelds „Veröffentlichen“ mit der erstellen Azure Container Registry

  7. Wählen Sie Fertig stellen aus, um den Veröffentlichungsvorgang Ihres Containerimages in der neu erstellten Registrierung in Azure abzuschließen.Choose Finish to complete the process of publishing your container image to the newly created registry in Azure.

    Screenshot mit erfolgreicher Veröffentlichung

Nächste SchritteNext Steps

Sie können jetzt den Container aus der Registrierung auf einen beliebigen Host ziehen, auf dem Docker-Images ausgeführt werden können. Beispiel: 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.

Zusätzliche RessourcenAdditional resources