Freigeben über


Schnellstart: Docker in Visual Studio

Mit Visual Studio können Sie containerisierte .NET-, ASP.NET- und ASP.NET Core-Apps ganz einfach erstellen, debuggen und ausführen und sie in Azure Container Registry, Docker Hub, Azure App Service oder Ihrer eigenen Containerregistrierung veröffentlichen. In diesem Artikel veröffentlichen wir eine ASP.NET Core-App in azure Container Registry.

Voraussetzungen

Installation und Einrichtung

Überprüfen Sie bei der Docker-Installation zunächst die Informationen unter Docker Desktop für Windows: Was Sie wissen sollten, bevor Sieinstallieren. Installieren Sie als Nächstes Docker Desktop.

Hinzufügen eines Projekts zu einem Docker-Container

  1. Erstellen Sie ein neues Projekt mithilfe der vorlage ASP.NET Core Web App oder wenn Sie .NET Framework anstelle von .NET Core verwenden möchten, wählen Sie ASP.NET Webanwendung (.NET Framework)aus.

  2. Stellen Sie auf dem Bildschirm Erstellen einer neuen Webanwendung sicher, dass das Kontrollkästchen Docker-Support aktivieren aktiviert ist.

    Screenshot des Kontrollkästchens

    Der Screenshot zeigt .NET Core; Wenn Sie .NET Framework verwenden, sieht es etwas anders aus.

  3. Wählen Sie den gewünschten Containertyp (Windows oder Linux) aus, und klicken Sie auf Erstellen.

Übersicht über Dockerfile

Eine Dockerfile-Datei, der wichtigste Bestandteil beim Erstellen eines endgültigen Docker-Images, wird im Projekt erstellt. Informationen zu den darin enthaltenen Befehlen finden Sie unter Dockerfile-Referenz:

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

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

Die vorangehende Dockerfile- basiert auf dem dotnet/core/aspnet-Image und enthält Anweisungen zum Ändern des Basisimages, indem Sie Ihr Projekt erstellen und dem Container hinzufügen. Wenn Sie .NET Framework verwenden, unterscheidet sich das Basisimage.

Wenn das Kontrollkästchen Für HTTPS konfigurieren des Dialogfelds „Neues Projekt“ aktiviert ist, stellt die Dockerfile zwei Ports zur Verfügung. Ein Port wird für HTTP-Datenverkehr verwendet; der andere Port wird für HTTPS verwendet. Wenn das Kontrollkästchen nicht aktiviert ist, wird ein einzelner Port (80) für HTTP-Datenverkehr verfügbar gemacht.

Fehlerbehebung

Wählen Sie Docker aus der Dropdownliste "Debuggen" in der Symbolleiste aus, und starten Sie das Debuggen der App. Möglicherweise wird eine Meldung mit einer Eingabeaufforderung zum Vertrauen auf ein Zertifikat angezeigt. Wählen Sie aus, dass dem Zertifikat vertraut wird, um den Vorgang fortzusetzen.

Die Option Containertools im Fenster Ausgabe zeigt, welche Aktionen ausgeführt werden. Beim ersten Mal kann es eine Weile dauern, bis das Basisimage heruntergeladen wird, aber bei nachfolgenden Ausführungen ist es viel schneller.

Anmerkung

Wenn Sie Ports für das Debuggen ändern müssen, können Sie dies in der launchSettings.json Datei tun. Weitere Informationen dazu finden Sie unter Containerstarteinstellungen.

Fenster „Container“

Wenn Sie über Visual Studio 2019, Version 16.4 oder höher, verfügen, können Sie das Fenster Container verwenden, um ausgeführte Container auf Ihrem Computer sowie Bilder anzuzeigen, die Verfügbar sind.

Öffnen Sie das Fenster Container mithilfe des Suchfelds in der IDE (drücken Sie STRG+Q, um es zu verwenden), geben Sie containerein, und wählen Sie in der Liste das Fenster Container aus.

Sie können das -Containerfenster an einem praktischen Ort, wie z. B. unterhalb des Editors, platzieren, indem Sie es bewegen und den Fensterplatzierungshilfen folgen.

Suchen Sie im Fenster Ihren Container, und durchlaufen Sie die einzelnen Registerkarten, um die Umgebungsvariablen, Portzuordnungen, Protokolle und das Dateisystem anzuzeigen.

Screenshot des Fensters

Weitere Informationen finden Sie unter Verwenden des Container-Fensters.

Veröffentlichen von Docker-Images

Sobald der Entwicklungs- und Debugzyklus der App abgeschlossen ist, können Sie ein Produktionsbild der App erstellen.

  1. Ändern Sie die Dropdownliste der Konfiguration in Release-, und erstellen Sie die App.

  2. Klicken Sie mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer, und wählen Sie Veröffentlichenaus.

  3. Wählen Sie im Dialogfeld Veröffentlichen die Registerkarte Docker-Containerregistrierung aus.

    Screenshot des Dialogfelds

  4. Wählen Sie Erstellen einer neuen Azure-Containerregistrierungaus.

    Screenshot des Dialogfelds

  5. Geben Sie die gewünschten Werte in das Formular "Erstellen einer neuen Azure-Containerregistrierung" ein.

    Einstellung Vorgeschlagener Wert Beschreibung
    DNS-Präfix Global eindeutiger Name Der Name, der Ihre Containerregistrierung eindeutig identifiziert.
    Abonnement Wählen Sie Ihr Abonnement aus Das zu verwendende Azure-Abonnement.
    Ressourcengruppe myResourceGroup Name der Ressourcengruppe, in der Die Containerregistrierung erstellt werden soll. Wählen Sie Neue aus, um eine neue Ressourcengruppe zu erstellen.
    SKU Norm Dienstebene der Containerregistrierung
    Registrierungsstandort Ein Ort in der Nähe von Ihnen Wählen Sie einen Speicherort in einer Region in Ihrer Nähe oder in der Nähe anderer Dienste aus, die Ihre Containerregistrierung verwenden.

    Screenshot des Dialogfelds

  6. Klicken Sie auf Erstellen. Im Dialogfeld Veröffentlichen wird nun die erstellte Registrierung angezeigt.

    Screenshot des Dialogfelds

  7. Wählen Sie Fertig stellen aus, um den Veröffentlichungsvorgang Ihres Containerimages in der neu erstellten Registrierung in Azure abzuschließen.

    Screenshot: erfolgreiche Veröffentlichung

Nächste Schritte

Sie können den Container jetzt aus der Registrierung auf jeden Host abrufen, der Docker-Images ausführen kann, z. B. Azure Container Instances.

Mit Visual Studio können Sie containerisierte .NET-, ASP.NET- und ASP.NET Core-Apps ganz einfach erstellen, debuggen und ausführen und sie in Azure Container Registry, Docker Hub, Azure App Service oder Ihrer eigenen Containerregistrierung veröffentlichen. In diesem Artikel veröffentlichen Sie eine ASP.NET Core-App in azure Container Registry.

Voraussetzungen

Installation und Einrichtung

Überprüfen Sie bei der Docker-Installation zunächst die Informationen unter Docker Desktop für Windows: Was Sie wissen sollten, bevor Sieinstallieren. Installieren Sie als Nächstes Docker Desktop.

Hinzufügen eines Projekts zu einem Docker-Container

  1. Bevor Sie das Visual Studio-Projekt erstellen, stellen Sie sicher, dass Docker Desktop den Typ von Containern (Windows oder Linux) ausführt, die Sie in Ihrem Visual Studio-Projekt verwenden möchten.

    Um den von Docker Desktop verwendeten Containertyp zu ändern, klicken Sie auf der Taskleiste mit der rechten Maustaste auf das Docker-Symbol (Wal), und wählen Sie entweder Wechseln zu Linux-Containern oder Wechseln zu Windows-Containern.

    Warnung

    Wenn Sie den Containertyp nach dem Erstellen des Visual Studio-Projekts wechseln, können die Docker-Imagedateien möglicherweise nicht geladen werden.

  2. Erstellen Sie ein neues Projekt mithilfe der vorlage ASP.NET Core Web App oder wenn Sie .NET Framework anstelle von .NET Core verwenden möchten, wählen Sie ASP.NET Webanwendung (.NET Framework)aus.

  3. Stellen Sie auf dem Bildschirm Erstellen einer neuen Webanwendung sicher, dass das Kontrollkästchen Docker-Support aktivieren aktiviert ist.

    Screenshot des Kontrollkästchens

    Der Screenshot zeigt die neueste Version mit .NET 8.0. Wenn Sie .NET Framework verwenden, sieht das Dialogfeld etwas anders aus.

  4. Wählen Sie den gewünschten Containertyp (Windows oder Linux) aus und klicken Sie auf Erstellen.

Übersicht über Dockerfile

Visual Studio erstellt eine Dockerfile- in Ihrem Projekt, die das Rezept zum Erstellen eines endgültigen Docker-Images bereitstellt. Weitere Informationen finden Sie in der Dockerfile-Referenz zu den befehlen, die in der Dockerfile-Datei verwendet werden.

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-1809 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyWebApp.dll"]

Das vorherige Dockerfile- basiert auf dem Microsoft Container Registry (MCR)- .NET 8-Image und enthält Anweisungen zum Ändern des Basisimages, indem das Projekt MyWebApp erstellt und dem Container hinzugefügt wird. Wenn Sie .NET Framework verwenden, unterscheidet sich das Basisimage.

Wenn das Kontrollkästchen Für HTTPS konfigurieren des Dialogfelds „Neues Projekt“ aktiviert ist, stellt die Dockerfile zwei Ports zur Verfügung. Ein Port wird für HTTP-Datenverkehr verwendet; der andere Port wird für HTTPS verwendet. Wenn das Kontrollkästchen nicht aktiviert ist, wird ein einzelner Port (80) für HTTP-Datenverkehr verfügbar gemacht.

Mit Visual Studio 2022, Version 17.7 oder höher, können Sie .NET 8-als Ziel festlegen. In diesem Fall haben Sie den Vorteil, dass Sie Ihre App sicherer ausführen können, als normaler Benutzer und nicht mit erhöhten Berechtigungen. Die von Visual Studio für .NET 8-Projekte generierte Dockerfile-Standarddatei ist für die Ausführung als normaler Benutzer konfiguriert. Um dieses Verhalten für ein vorhandenes Projekt zu aktivieren, fügen Sie die Zeile USER app der Dockerfile im Basisimage hinzu. Da Port 80 für normale Benutzer eingeschränkt ist, machen Sie ports 8080 und 8081 anstelle von 80 und 443 verfügbar. Port 8080 wird für HTTP-Datenverkehr verwendet, und Port 8081 wird für HTTPS verwendet. Zum Ausführen als normaler Benutzer muss der Container ein .NET 8-Basisimage verwenden, und die App muss als .NET 8-App ausgeführt werden. Wenn Sie ordnungsgemäß konfiguriert sind, sollte Ihre Dockerfile Code wie im folgenden Beispiel enthalten:

FROM mcr.microsoft.com/dotnet/aspnet:8.0-preview AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Fehlerbehebung

Wählen Sie Docker aus der Dropdownliste "Debuggen" in der Symbolleiste aus, und starten Sie das Debuggen der App. Möglicherweise wird eine Meldung mit einer Eingabeaufforderung zum Vertrauen auf ein Zertifikat angezeigt. Wählen Sie aus, dass dem Zertifikat vertraut wird, um den Vorgang fortzusetzen.

Die Option Containertools im Fenster Ausgabe zeigt, welche Aktionen ausgeführt werden. Beim ersten Mal kann es eine Weile dauern, bis das Basisimage heruntergeladen wird, aber bei nachfolgenden Ausführungen ist es schneller.

Nach Abschluss des Builds wird der Browser geöffnet und zeigt die Startseite Ihrer App an. In der Adressleiste des Browsers sehen Sie die localhost URL und die Portnummer für das Debuggen.

Anmerkung

Wenn Sie Ports für das Debuggen ändern müssen, können Sie dies in der launchSettings.json Datei tun. Weitere Informationen dazu finden Sie unter Containerstarteinstellungen.

Fenster „Container“

Sie können das Fenster Container verwenden, um laufende Container auf Ihrem Rechner und andere verfügbare Images anzuzeigen.

Öffnen Sie das Fenster Container mithilfe des Suchfelds in der IDE (drücken Sie STRG+Q, um es zu verwenden), geben Sie containerein, und wählen Sie in der Liste das Fenster Container aus.

Sie können das Fenster Containers an einem praktischen Ort bereitstellen, beispielsweise unterhalb des Editors, indem Sie es verschieben und den Fensterplatzierungsanleitungen folgen.

Suchen Sie im Fenster Ihren Container, und durchlaufen Sie die einzelnen Registerkarten, um die Umgebungsvariablen, Portzuordnungen, Protokolle und das Dateisystem anzuzeigen.

Screenshot des Fensters

Weitere Informationen finden Sie unter Verwenden des Container-Fensters.

Veröffentlichen von Docker-Images

Sobald der Entwicklungs- und Debugzyklus der App abgeschlossen ist, können Sie ein Produktionsbild der App erstellen.

  1. Ändern Sie die Dropdownliste der Konfiguration in Release-, und erstellen Sie die App.

  2. Klicken Sie mit der rechten Maustaste auf Ihr Projekt im Projektmappen-Explorer, und wählen Sie Veröffentlichenaus.

  3. Wählen Sie im Dialogfeld Veröffentlichen die Registerkarte Docker-Containerregistrierung aus.

    Screenshot des Dialogfelds

  4. Wählen Sie Erstellen einer neuen Azure-Containerregistrierungaus.

    Screenshot des Dialogfelds

  5. Geben Sie die gewünschten Werte im Feld Neue Azure-Containerregistrierung erstellen ein.

    Einstellung Vorgeschlagener Wert Beschreibung
    DNS-Präfix Global eindeutiger Name Der Name, der Ihre Containerregistrierung eindeutig identifiziert.
    Abonnement Wählen Sie Ihr Abonnement aus Das zu verwendende Azure-Abonnement.
    Ressourcengruppe meineRessourcengruppe Name der Ressourcengruppe, in der Die Containerregistrierung erstellt werden soll. Wählen Sie Neue aus, um eine neue Ressourcengruppe zu erstellen.
    SKU Norm Dienstebene der Containerregistrierung
    Registrierungsstandort Ein Ort in der Nähe von Ihnen Wählen Sie einen Speicherort in einer Region in Ihrer Nähe oder in der Nähe anderer Dienste aus, die Ihre Containerregistrierung verwenden können.

    Screenshot des Dialogfelds

  6. Wählen Sie Erstellen aus. Im Dialogfeld Veröffentlichen wird nun die erstellte Registrierung angezeigt.

    Screenshot des Dialogfelds

  7. Wählen Sie Fertig stellen aus, um den Veröffentlichungsvorgang Ihres Containerimages in der neu erstellten Registrierung in Azure abzuschließen.

    Screenshot: erfolgreiche Veröffentlichung

Nächste Schritte

Sie können den Container jetzt aus der Registrierung auf jeden Host abrufen, der Docker-Images ausführen kann, z. B. Azure Container Instances.

Weitere Ressourcen