Freigeben über


Schnellstart: Containertools 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 Sie eine ASP.NET Core-App in azure Container Registry.

Voraussetzungen

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.

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.

Um Podman als Containerplattform zu verwenden, laden Sie Podman Desktop für Windows herunter, und folgen Sie dann dem Lernprogramm bei Podman für Windows , um einen Podman-Computer zu initialisieren und zu starten.

Hinzufügen eines Projekts zu einem 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 .

  3. Stellen Sie auf dem Bildschirm " Neue Webanwendung erstellen" sicher, dass das Kontrollkästchen "Containerunterstützung aktivieren " aktiviert ist.

    Screenshot des Kontrollkästchens

    Der Screenshot zeigt die neueste Version mit .NET 8.0.

  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 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 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 vorhergehende Dockerfile basiert auf dem Microsoft syndicates Containerkatalog .NET 8-Image und enthält Anweisungen zum Ändern des Basisimages, indem das Projekt mit dem Namen 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 oder 8080) für HTTP-Datenverkehr verfügbar gemacht.

Beim Ausrichten auf .NET 8 und höher haben Sie den Vorteil, dass Sie Ihre App sicherer als normaler Benutzer ausführen können, statt 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 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Die Standardvorlagen für .NET 8 und höher verwenden die Umgebungsvariable APP_UID für die Identität des normalen Benutzers.

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.

Hinzufügen eines Projekts zu einem 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 .

  3. Stellen Sie auf dem Bildschirm " Neue Webanwendung erstellen " sicher, dass das Kontrollkästchen "Containerunterstützung aktivieren " aktiviert ist.

    Screenshot des Kontrollkästchens

    Der Screenshot zeigt die neueste Version mit .NET 8.0.

  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 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 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 vorhergehende Dockerfile basiert auf dem Microsoft syndicates Containerkatalog .NET 8-Image und enthält Anweisungen zum Ändern des Basisimages, indem das Projekt mit dem Namen MyWebApp erstellt und dem Container hinzugefügt wird.

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 oder 8080) für HTTP-Datenverkehr verfügbar gemacht.

Beim Ausrichten auf .NET 8 und höher haben Sie den Vorteil, dass Sie Ihre App sicherer als normaler Benutzer ausführen können, statt 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 AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Die Standardvorlagen verwenden die Umgebungsvariable APP_UID für die Identität des normalen Benutzers.

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