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 vor der Installation wissen sollten. Installieren Sie als Nächstes Docker Desktop.

Hinzufügen eines Projekts zu einem Docker-Container

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

  2. Stellen Sie auf dem Bildschirm " Neue Webanwendung erstellen " 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, das Rezept zum Erstellen eines endgültigen Docker-Images, wird im Projekt erstellt. Informationen zu den darin enthaltenen Befehlen finden Sie in der 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 vorherige Dockerfile-Datei 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 neuen Projektdialogfelds aktiviert ist, macht dockerfile zwei Ports verfügbar. 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 Ausgabefenster zeigt an, 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. Siehe 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 ", indem Sie das Suchfeld in der IDE verwenden ( drücken Sie STRG+Q , um es zu verwenden), geben Sie ein container, und wählen Sie in der Liste das Fenster "Container " aus.

Sie können das Containerfenster an einem praktischen Ort, z. B. unterhalb des Editors, einbinden, indem Sie es bewegen und den Fensterplatzierungshandbüchern 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 Fensters "Container".

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 für die Konfiguration in "Freigeben ", und erstellen Sie die App.

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

  3. Wählen Sie im Dialogfeld " Veröffentlichen " die Registerkarte "Docker Container Registry " aus.

    Screenshot des Dialogfelds

  4. Wählen Sie "Neue Azure-Containerregistrierung erstellen" aus.

    Screenshot des Dialogfelds

  5. Tragen Sie Ihre gewünschten Werte in der Erstellen Sie eine neue 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 meineRessourcengruppe Name der Ressourcengruppe, in der Die Containerregistrierung erstellt werden soll. Wählen Sie "Neu" aus, um eine neue Ressourcengruppe zu erstellen.
    SKU Norm Dienstebene der Containerregistrierung
    Registrierungsort Ein Ort in der Nähe von Ihnen Wählen Sie einen Standort 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 Vorgang zum Veröffentlichen Ihres Containerimages in der neu erstellten Registrierung in Azure abzuschließen.

    Screenshot mit erfolgreicher 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-Containerinstanzen.

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 vor der Installation wissen sollten. 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 mit der rechten Maustaste auf das Docker-Symbol (Wal) in der Taskleiste, und wählen Sie entweder zu Linux-Containern wechseln oder zu Windows-Containern wechseln.

    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 ASP.NET Core Web App-Vorlage , oder wählen Sie ASP.NET Webanwendung (.NET Framework) aus, wenn Sie .NET Framework anstelle von .NET Core verwenden möchten.

  3. Stellen Sie auf dem Bildschirm " Neue Webanwendung erstellen " 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) und dann "Erstellen" aus.

Übersicht über Dockerfile

Visual Studio erstellt eine Dockerfile-Datei 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"]

Die vorangehende Dockerfile basiert auf dem .NET 8-Image aus dem Microsoft Container Registry (MCR) und enthält Anweisungen zur Änderung 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 neuen Projektdialogfelds aktiviert ist, macht dockerfile zwei Ports verfügbar. 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 Ausgabefenster zeigt an, 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. Siehe Containerstarteinstellungen.

Fenster „Container“

Im Fenster Container werden auf Ihrem Computer ausgeführte Container und andere verfügbare Images angezeigt.

Öffnen Sie das Fenster "Container ", indem Sie das Suchfeld in der IDE verwenden ( drücken Sie STRG+Q , um es zu verwenden), geben Sie ein container, und wählen Sie in der Liste das Fenster "Container " aus.

Sie können das Containerfenster an einem praktischen Ort, z. B. unterhalb des Editors, einbinden, indem Sie es bewegen und den Fensterplatzierungshandbüchern 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 Fensters "Container".

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 für die Konfiguration in "Freigeben ", und erstellen Sie die App.

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

  3. Wählen Sie im Dialogfeld " Veröffentlichen " die Registerkarte "Docker Container Registry " aus.

    Screenshot des Dialogfelds

  4. Wählen Sie "Neue Azure-Containerregistrierung erstellen" aus.

    Screenshot des Dialogfelds

  5. Tragen Sie Ihre gewünschten Werte in der Erstellen Sie eine neue 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 meineRessourcengruppe Name der Ressourcengruppe, in der Die Containerregistrierung erstellt werden soll. Wählen Sie "Neu" aus, um eine neue Ressourcengruppe zu erstellen.
    SKU Norm Dienstebene der Containerregistrierung
    Registrierungsort Ein Ort in der Nähe von Ihnen Wählen Sie einen Standort 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 Vorgang zum Veröffentlichen Ihres Containerimages in der neu erstellten Registrierung in Azure abzuschließen.

    Screenshot mit erfolgreicher 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-Containerinstanzen.

Weitere Ressourcen