Schnellstart: 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, Docker Hub, Azure App Service oder Ihrer eigenen Containerregistrierung veröffentlichen. In diesem Artikel wird die Veröffentlichung in Azure Container Registry veranschaulicht.
Voraussetzungen
- Docker Desktop
- Visual Studio 2017 mit den Workloads für Webentwicklung, Azure-Tools und bzw. oder plattformübergreifende .NET Core-Entwicklung
- Zum Veröffentlichen in Azure Container Registry ist ein Azure-Abonnement erforderlich. Registrieren Sie sich für eine kostenlose Testversion.
Installation und Einrichtung
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). Installieren Sie anschließend Docker Desktop.
Hinzufügen eines Projekts zu einem Docker-Container
Wählen Sie im Menü von Visual Studio Datei > Neu > Projekt aus.
Wählen Sie im Abschnitt Vorlagen des Dialogfelds Neues Projekt die Option Visual C# > Web aus.
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.
Weisen Sie Ihrer neuen Anwendung einen Namen zu (oder übernehmen Sie den Standardnamen), und wählen Sie OK aus.
Wählen Sie Webanwendung aus.
Aktivieren Sie das Kontrollkästchen Docker-Unterstützung aktivieren.
Im Screenshot wird .NET Core verwendet. Mit .NET Framework sieht der Bildschirm etwas anders aus.
Wählen Sie den gewünschten Containertyp (Windows oder Linux), und klicken Sie auf OK.
Übersicht über die Dockerfile-Datei
Eine Dockerfile-Datei, der wichtigste Bestandteil beim Erstellen eines endgültigen Docker-Images, wird im Projekt erstellt. Einen Überblick über die enthaltenen Befehle finden Sie in der Dockerfile-Referenz:
FROM mcr.microsoft.com/dotnet/aspnet:2.1 AS base
WORKDIR /app
EXPOSE 59518
EXPOSE 44364
FROM mcr.microsoft.com/dotnet/sdk:2.1 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. Wenn Sie .NET Framework verwenden, unterscheidet sich das Basisimage.
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. Ein Port wird für den HTTP-Datenverkehr, der andere für HTTPS verwendet. Wenn dieses Kontrollkästchen nicht aktiviert ist, wird nur der Port 80 für den HTTP-Datenverkehr verfügbar gemacht.
Debug
Wählen Sie in der Symbolleiste im Dropdownmenü „Debuggen“ die Option Docker aus, und starten Sie das Debuggen der Anwendung. Möglicherweise wird eine Meldung mit einer Eingabeaufforderung zum Vertrauen eines Zertifikats angezeigt. Vertrauen Sie dem Zertifikat, um fortzufahren.
Im Ausgabefenster wird gezeigt, welche Aktionen ausgeführt werden.
Öffnen Sie die Paket-Manager-Konsole über das Menü Extras> NuGet-Paket-Manager > Paket-Manager-Konsole.
Das resultierende Docker-Image der App wird mit dem Tag dev versehen. Das Image basiert auf dem Tag 2.1-aspnetcore-runtime des Basisimages microsoft/dotnet. Führen Sie im Fenster Paket-Manager-Konsole den Befehl docker images
aus. Die Images auf dem Computer werden angezeigt:
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. Verwenden Sie die Releasekonfiguration, um ein Produktionsimage zu erstellen, das alle Inhalte enthält.
Führen Sie in der Paket-Manager-Konsole den Befehl docker ps
aus. Beachten Sie, dass die App mithilfe des Containers ausgeführt wird:
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-Images
Sobald der Entwicklungs- und Debugzyklus der App abgeschlossen ist, können Sie ein Produktionsimage der App erstellen.
Wählen Sie im Dropdownmenü „Konfiguration“ die Option Release aus, und erstellen Sie die App.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen.
Wählen Sie im Dialogfeld „Ziel veröffentlichen“ die Registerkarte Container Registry.
Klicken Sie auf Neue Azure Container Registry-Instanz erstellen, und klicken Sie dann auf Veröffentlichen.
Geben Sie die gewünschten Werte im Feld Neue Azure-Containerregistrierung erstellen ein.
Einstellung Vorgeschlagener Wert Beschreibung DNS-Präfix Global eindeutiger Name Name, der Ihre Containerregistrierung eindeutig identifiziert. Abonnement Auswählen Ihres Abonnements Das zu verwendende Azure-Abonnement. Ressourcengruppe myResourceGroup Name der Ressourcengruppe, in der die Containerregistrierung erstellt werden soll. Wählen Sie Neu aus, um eine neue Ressourcengruppe zu erstellen. SKU Standard Dienstebene der Containerregistrierung Registrierungsstandort Ein Standort in Ihrer Nähe 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. Klicken Sie auf Erstellen
Nächste Schritte
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.
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, 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
- Docker Desktop
- Visual Studio 2019 mit installierten Workloads für Webentwicklung, Azure-Tools und/oder plattformübergreifende .NET Core-Entwicklung
- .NET Core-Entwicklungstools für die Entwicklung mit .NET Core
- Zum Veröffentlichen in Azure Container Registry ist ein Azure-Abonnement erforderlich. Registrieren Sie sich für eine kostenlose Testversion.
Installation und Einrichtung
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). Installieren Sie anschließend Docker Desktop.
Hinzufügen eines Projekts zu einem Docker-Container
Erstellen Sie mithilfe der Vorlage ASP.NET Core-Web-App ein neues Projekt. Wenn Sie anstelle von .NET Core lieber .NET Framework verwenden möchten, wählen Sie ASP.NET-Webanwendung (.NET Framework) aus.
Vergewissern Sie sich, dass auf dem Bildschirm Neue Webanwendung erstellen das Kontrollkästchen Docker-Unterstützung aktivieren aktiviert ist.
Im Screenshot wird .NET Core verwendet. Mit .NET Framework sieht der Bildschirm etwas anders aus.
Wählen Sie den gewünschten Containertyp aus (Windows oder Linux), und klicken Sie auf Erstellen.
Übersicht über die Dockerfile-Datei
Eine Dockerfile-Datei, der wichtigste Bestandteil beim Erstellen eines endgültigen Docker-Images, wird im Projekt erstellt. Einen Überblick über die enthaltenen Befehle 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"]
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. Wenn Sie .NET Framework verwenden, unterscheidet sich das Basisimage.
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. Ein Port wird für den HTTP-Datenverkehr, der andere für HTTPS verwendet. Wenn dieses Kontrollkästchen nicht aktiviert ist, wird nur der Port 80 für den HTTP-Datenverkehr verfügbar gemacht.
Debug
Wählen Sie in der Symbolleiste im Dropdownmenü „Debuggen“ die Option Docker aus, und starten Sie das Debuggen der Anwendung. Möglicherweise wird eine Meldung mit einer Eingabeaufforderung zum Vertrauen eines Zertifikats angezeigt. Vertrauen Sie dem Zertifikat, um fortzufahren.
Die Option Containertools im Fenster Ausgabe zeigt, welche Aktionen ausgeführt werden. Beim ersten Mal kann der Download des Basisimages einige Zeit dauern. Bei nachfolgenden Ausführungen geht es aber deutlich schneller.
Hinweis
Wenn Sie die Ports zum Debuggen ändern müssen, können Sie diese Änderungen in der Datei launchSettings.json vornehmen. Weitere Informationen dazu finden Sie unter Containerstarteinstellungen.
Fenster „Container“
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.
Ö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.
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.
Suchen Sie im Fenster Ihren Container, und sehen Sie sich jede Registerkarte an, um die Umgebungsvariablen, Portzuordnungen, Protokolle und das Dateisystem anzuzeigen.
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 Produktionsimage der App erstellen.
Wählen Sie im Dropdownmenü „Konfiguration“ die Option Release aus, und erstellen Sie die App.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen.
Wählen Sie im Dialogfeld Veröffentlichen die Registerkarte Docker-Containerregistrierung aus.
Wählen Sie Neue Azure Container Registry-Instanz erstellen.
Geben Sie die gewünschten Werte im Feld Neue Azure-Containerregistrierung erstellen ein.
Einstellung Vorgeschlagener Wert Beschreibung DNS-Präfix Global eindeutiger Name Name, der Ihre Containerregistrierung eindeutig identifiziert. Abonnement Auswählen Ihres Abonnements Das zu verwendende Azure-Abonnement. Ressourcengruppe myResourceGroup Name der Ressourcengruppe, in der die Containerregistrierung erstellt werden soll. Wählen Sie Neu aus, um eine neue Ressourcengruppe zu erstellen. SKU Standard Dienstebene der Containerregistrierung Registrierungsstandort Ein Standort in Ihrer Nähe 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. Klicken Sie auf Erstellen. Im Dialogfeld Veröffentlichen wird jetzt die erstellte Registrierung angezeigt.
Wählen Sie Fertig stellen aus, um den Veröffentlichungsvorgang Ihres Containerimages in der neu erstellten Registrierung in Azure abzuschließen.
Nächste Schritte
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.
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, 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
- Docker Desktop
- Visual Studio 2022 mit installierten Workloads für Webentwicklung, Azure-Tools und/oder plattformübergreifende .NET Core-Entwicklung
- .NET Core-Entwicklungstools für die Entwicklung mit .NET Core
- Zum Veröffentlichen in Azure Container Registry ist ein Azure-Abonnement erforderlich. Registrieren Sie sich für eine kostenlose Testversion.
Installation und Einrichtung
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). Installieren Sie anschließend Docker Desktop.
Hinzufügen eines Projekts zu einem Docker-Container
Erstellen Sie mithilfe der Vorlage ASP.NET Core-Web-App ein neues Projekt. Wenn Sie anstelle von .NET Core lieber .NET Framework verwenden möchten, wählen Sie ASP.NET-Webanwendung (.NET Framework) aus.
Vergewissern Sie sich, dass auf dem Bildschirm Neue Webanwendung erstellen das Kontrollkästchen Docker-Unterstützung aktivieren aktiviert ist.
Im Screenshot wird .NET 6.0 verwendet. Mit .NET Framework sieht der Bildschirm etwas anders aus.
Wählen Sie den gewünschten Containertyp aus (Windows oder Linux), und klicken Sie auf Erstellen.
Übersicht über die Dockerfile-Datei
Eine Dockerfile-Datei, der wichtigste Bestandteil beim Erstellen eines endgültigen Docker-Images, wird im Projekt erstellt. Einen Überblick über die enthaltenen Befehle finden Sie in der Dockerfile-Referenz:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApplication3/WebApplication3.csproj", "WebApplication3/"]
RUN dotnet restore "WebApplication3/WebApplication3.csproj"
COPY . .
WORKDIR "/src/WebApplication3"
RUN dotnet build "WebApplication3.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication3.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication3.dll"]
Das obige Dockerfile basiert auf dem Image MCR-Image (Microsoft Container Registry) für .NET 6 und enthält Anweisungen zum Anpassen des Basisimages durch das Kompilieren Ihres Projekts und das anschließende Hinzufügen des Projekts zum Container. Wenn Sie .NET Framework verwenden, unterscheidet sich das Basisimage.
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. Ein Port wird für den HTTP-Datenverkehr, der andere für HTTPS verwendet. Wenn dieses Kontrollkästchen nicht aktiviert ist, wird nur der Port 80 für den HTTP-Datenverkehr verfügbar gemacht.
Debug
Wählen Sie in der Symbolleiste im Dropdownmenü „Debuggen“ die Option Docker aus, und starten Sie das Debuggen der Anwendung. Möglicherweise wird eine Meldung mit einer Eingabeaufforderung zum Vertrauen eines Zertifikats angezeigt. Vertrauen Sie dem Zertifikat, um fortzufahren.
Die Option Containertools im Fenster Ausgabe zeigt, welche Aktionen ausgeführt werden. Beim ersten Mal kann der Download des Basisimages einige Zeit dauern. Bei nachfolgenden Ausführungen geht es aber deutlich schneller.
Nach dem Kompilieren wird der Browser mit der Homepage für Ihre App geöffnet. In der Adressleiste des Browsers werden die Localhost-URL und die Portnummer für das Debuggen angezeigt.
Hinweis
Wenn Sie die Ports zum Debuggen ändern müssen, können Sie diese Änderungen in der Datei launchSettings.json vornehmen. Weitere Informationen dazu finden Sie unter Containerstarteinstellungen.
Fenster „Container“
Im Fenster Container werden auf Ihrem Computer ausgeführte Container und verfügbare Images angezeigt.
Ö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.
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.
Suchen Sie im Fenster Ihren Container, und sehen Sie sich jede Registerkarte an, um die Umgebungsvariablen, Portzuordnungen, Protokolle und das Dateisystem anzuzeigen.
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 Produktionsimage der App erstellen.
Wählen Sie im Dropdownmenü „Konfiguration“ die Option Release aus, und erstellen Sie die App.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Veröffentlichen.
Wählen Sie im Dialogfeld Veröffentlichen die Registerkarte Docker-Containerregistrierung aus.
Wählen Sie Neue Azure Container Registry-Instanz erstellen.
Geben Sie die gewünschten Werte im Feld Neue Azure-Containerregistrierung erstellen ein.
Einstellung Vorgeschlagener Wert Beschreibung DNS-Präfix Global eindeutiger Name Name, der Ihre Containerregistrierung eindeutig identifiziert. Abonnement Auswählen Ihres Abonnements Das zu verwendende Azure-Abonnement. Ressourcengruppe myResourceGroup Name der Ressourcengruppe, in der die Containerregistrierung erstellt werden soll. Wählen Sie Neu aus, um eine neue Ressourcengruppe zu erstellen. SKU Standard Dienstebene der Containerregistrierung Registrierungsstandort Ein Standort in Ihrer Nähe 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. Klicken Sie auf Erstellen. Im Dialogfeld Veröffentlichen wird jetzt die erstellte Registrierung angezeigt.
Wählen Sie Fertig stellen aus, um den Veröffentlichungsvorgang Ihres Containerimages in der neu erstellten Registrierung in Azure abzuschließen.
Nächste Schritte
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.