Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Unterstützung für Docker-Container in unterstützten Visual Studio-Projekttypen hinzufügen, z. B. ASP.NET Webprojekte und andere. Informationen zu unterstützten Projekttypen in Ihrer Version von Visual Studio finden Sie in der Übersicht .
Sie können Unterstützung für Docker- oder Podman-Container in unterstützten Visual Studio-Projekttypen hinzufügen, z. B. ASP.NET Webprojekte und andere. Informationen zu unterstützten Projekttypen in Ihrer Version von Visual Studio finden Sie in der Übersicht .
Voraussetzungen
- Docker Desktop
- Visual Studio mit installierter ASP.NET- und Webentwicklung, Azure-Entwicklungsarbeitsauslastung und/oder .NET-Desktopentwicklungsworkload .
- Zum Veröffentlichen in der Azure-Containerregistrierung ist ein Azure-Abonnement erforderlich. Registrieren Sie sich für eine kostenlose Testversion.
Voraussetzungen
- Docker Desktop oder Podman Desktop.
- Visual Studio oder für Podman-Unterstützung , Visual Studio 2026, mit installierter ASP.NET und Webentwicklung, Azure-Entwicklungsarbeitsauslastung und/oder .NET-Desktopentwicklungsworkload .
- Zum Veröffentlichen in der Azure-Containerregistrierung ist ein Azure-Abonnement erforderlich. Registrieren Sie sich für eine kostenlose Testversion.
Hinzufügen der Containerunterstützung beim Erstellen eines Projekts
Sie können die Unterstützung für Container während der Projekterstellung aktivieren, indem Sie die Containerunterstützung aktivieren, wenn Sie ein neues Projekt erstellen, wie im folgenden Screenshot gezeigt:
Hinweis
Für .NET Framework-Projekte (nicht .NET Core) sind nur Windows-Container verfügbar.
Hinweis
Wenn Sie die vollständige .NET Framework-Konsolenprojektvorlage verwenden, ist die unterstützte Option, Container Orchestrator-Unterstützung hinzuzufügen, nach der Projekterstellung verfügbar, mit Optionen zur Verwendung von Service Fabric oder Docker Compose. Das Hinzufügen von Support bei der Projekterstellung und das Hinzufügen von Docker-Unterstützung für ein einzelnes Projekt ohne Orchestrierung sind keine Optionen verfügbar.
Hinweis
Die Unterstützung für .NET Framework-Container wird in der aktuellen Version von Visual Studio nicht mehr unterstützt. .NET Framework-Container wurden bis zu Visual Studio 2022 17.14 unterstützt.
Hinzufügen der Containerunterstützung zu einem vorhandenen Projekt
Sie können einem vorhandenen Projekt Docker-Unterstützung hinzufügen, indem Sie im Projektmappen-Explorer>hinzufügen" auswählen. Die Befehle "Containerunterstützung hinzufügen>" und "Container-Orchestrator-Unterstützung hinzufügen>" befinden sich im Kontextmenü des Projektknotens für ein ASP.NET Core-Projekt im Projektmappen-Explorer, wie im folgenden Screenshot gezeigt.
Wählen Sie den Container-Build-Typ und andere Optionen
Wenn Sie containerunterstützung zu einem .NET 7- oder höher-Projekt hinzufügen oder aktivieren, zeigt Visual Studio das Dialogfeld " Containergerüstoptionen " an, das Ihnen die Wahl des Betriebssystems (Linux oder Windows) ermöglicht, aber auch die Möglichkeit zum Auswählen des Containerbuildtyps, entweder Dockerfile oder .NET SDK.
Sie können auch das Containerimage-Distro und den Container-Build-Kontext angeben.
Containerimage-Distro gibt an, welches Betriebssystemimage Ihre Container als Basisimage verwenden. Diese Liste ändert sich, wenn Sie zwischen Linux und Windows als Containertyp wechseln.
Die folgenden Bilder sind verfügbar:
Fenster:
- Windows Nano Server (empfohlen, nur verfügbar 8.0 und höher, nicht voreingestellt für Native Ahead-of-Time (AOT)-Bereitstellungs-Projekte)
- Windows Server Core (nur verfügbar 8.0 und höher)
Linux:
- Standard (Debian, aber das Tag entspricht Ihrer .NET-Zielversion)
- Debian
- Ubuntu
- Chiseled Ubuntu (eine optimierte Version von Ubuntu)
- Alpin
Hinweis
Container, die auf dem Chiseled Ubuntu-Image basieren und die Native Ahead-of-Time (AOT)-Bereitstellung verwenden, können nur im Fast-Modus gedebuggt werden. Siehe Anpassen von Docker-Containern in Visual Studio.
Container-Build-Kontext gibt den Ordner an, der für docker build (oder podman build) verwendet wird. Siehe Docker-Buildkontext oder Podman-Build. Der Standard ist der Lösungsordner, der empfohlen wird. Alle für einen Build erforderlichen Dateien müssen sich unter diesem Ordner befinden. Dies ist nicht der Fall, wenn Sie den Projektordner oder einen anderen Ordner auswählen.
Dockerfile-Container-Buildtyp
Wenn Sie den Buildtyp des Dockerfile-Containers auswählen, fügt Visual Studio dem Projekt Folgendes hinzu:
- Eine Dockerfile-Datei
- eine
.dockerignoreDatei - Ein NuGet-Paketverweis auf Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Die von Ihnen hinzugefügte Dockerfile ähnelt dem folgenden Code. In diesem Beispiel wurde das Projekt benannt WebApplication-Docker, und Sie haben Linux-Container ausgewählt:
# 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 ["WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj", "WebApplication15-AddContainerSupport/"]
RUN dotnet restore "./WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj"
COPY . .
WORKDIR "/src/WebApplication15-AddContainerSupport"
RUN dotnet build "./WebApplication15-AddContainerSupport.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 "./WebApplication15-AddContainerSupport.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", "WebApplication15-AddContainerSupport.dll"]
.NET SDK-Container-Build-Typ
Sie können die integrierte Unterstützung des .NET SDK für Containerbuilds verwenden, was bedeutet, dass Sie keine Dockerfile benötigen. siehe Containerisieren einer .NET-App mit dotnet publish. Stattdessen konfigurieren Sie Ihre Container mithilfe von MSBuild-Eigenschaften in der Projektdatei, und die Einstellungen zum Starten der Container mit Visual Studio werden in einer .json Konfigurationsdatei codiert,launchSettings.json.
Wählen Sie hier .NET SDK als Containerbuildtyp aus, um die Containerverwaltung von .NET SDK anstelle einer Dockerfile-Datei zu verwenden.
Containerimage-Distro gibt an, welches Betriebssystemimage Ihre Container als Basisimage verwenden. Diese Liste ändert sich, wenn Sie zwischen Linux und Windows als Container wechseln. Eine Liste der verfügbaren Bilder finden Sie im vorherigen Abschnitt.
Der .NET SDK-Containerbuildeintrag in launchSettings.json sieht wie der folgende Code aus:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
Das .NET SDK verwaltet einige der Einstellungen, die in einer Dockerfile-Datei codiert wurden, z. B. das Containerbasisimage und die festzulegenden Umgebungsvariablen. Die in der Projektdatei für die Containerkonfiguration verfügbaren Einstellungen werden unter Anpassen Ihres Containers aufgeführt. Beispielsweise wird die Container-Image-Distribution in der Projektdatei als Eigenschaft ContainerBaseImage gespeichert. Sie können sie später ändern, indem Sie die Projektdatei bearbeiten.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Wählen Sie den Container-Build-Typ und andere Optionen
Wenn Sie docker-Unterstützung zu einem .NET 7- oder höher-Projekt hinzufügen oder aktivieren, zeigt Visual Studio das Dialogfeld " Containergerüstoptionen " an, das Ihnen die Wahl des Betriebssystems (Linux oder Windows) bietet, aber auch die Möglichkeit, den Containerbuildtyp auszuwählen, entweder Dockerfile oder .NET SDK. Dieses Dialogfeld wird in .NET Framework-Projekten nicht angezeigt.
In 17.11 und höher können Sie auch die Container-Image-Distro und den Docker-Build-Kontext angeben.
Containerimage-Distro gibt an, welches Betriebssystemimage Ihre Container als Basisimage verwenden. Diese Liste ändert sich, wenn Sie zwischen Linux und Windows als Containertyp wechseln.
Die folgenden Bilder sind verfügbar:
Fenster:
- Windows Nano Server (empfohlen, nur verfügbar 8.0 und höher, nicht voreingestellt für Native Ahead-of-Time (AOT)-Bereitstellungs-Projekte)
- Windows Server Core (nur verfügbar 8.0 und höher)
Linux:
- Standard (Debian, aber das Tag ist "8.0")
- Debian
- Ubuntu
- Chiseled Ubuntu (eine optimierte Version von Ubuntu)
- Alpin
Hinweis
Container, die auf dem Chiseled Ubuntu-Image basieren und die Native Ahead-of-Time (AOT)-Bereitstellung verwenden, können nur im Fast-Modus gedebuggt werden. Siehe Anpassen von Docker-Containern in Visual Studio.
Docker Build Context gibt den Ordner an, der für den Docker-Build verwendet wird. Siehe Docker-Buildkontext. Der Standard ist der Lösungsordner, der empfohlen wird. Alle für einen Build erforderlichen Dateien müssen sich unter diesem Ordner befinden. Dies ist nicht der Fall, wenn Sie den Projektordner oder einen anderen Ordner auswählen.
Dockerfile-Container-Buildtyp
Wenn Sie den Buildtyp des Dockerfile-Containers auswählen, fügt Visual Studio dem Projekt Folgendes hinzu:
- Eine Dockerfile-Datei
- eine
.dockerignoreDatei - Ein NuGet-Paketverweis auf Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Die von Ihnen hinzugefügte Dockerfile ähnelt dem folgenden Code. In diesem Beispiel wurde das Projekt benannt WebApplication-Docker, und Sie haben Linux-Container ausgewählt:
#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:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]
.NET SDK-Container-Build-Typ
Wenn Visual Studio 2022 17.9 und höher mit dem .NET 7 SDK installiert ist, in ASP.NET Core-Projekten, die auf .NET 6 oder höher abzielen, haben Sie die Möglichkeit, die integrierte Unterstützung von .NET SDK für Containerbuilds zu verwenden, was bedeutet, dass Sie keine Dockerfile benötigen; siehe Containerisieren einer .NET-App mit dotnet publish. Stattdessen konfigurieren Sie Ihre Container mithilfe von MSBuild-Eigenschaften in der Projektdatei, und die Einstellungen zum Starten der Container mit Visual Studio werden in einer .json Konfigurationsdatei codiert,launchSettings.json.
Wählen Sie hier .NET SDK als Containerbuildtyp aus, um die Containerverwaltung von .NET SDK anstelle einer Dockerfile-Datei zu verwenden.
Containerimage-Distro gibt an, welches Betriebssystemimage Ihre Container als Basisimage verwenden. Diese Liste ändert sich, wenn Sie zwischen Linux und Windows als Container wechseln. Eine Liste der verfügbaren Bilder finden Sie im vorherigen Abschnitt.
Der .NET SDK-Containerbuildeintrag in launchSettings.json sieht wie der folgende Code aus:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
Das .NET SDK verwaltet einige der Einstellungen, die in einer Dockerfile-Datei codiert wurden, z. B. das Containerbasisimage und die festzulegenden Umgebungsvariablen. Die in der Projektdatei für die Containerkonfiguration verfügbaren Einstellungen werden unter Anpassen Ihres Containers aufgeführt. Beispielsweise wird die Container-Image-Distribution in der Projektdatei als Eigenschaft ContainerBaseImage gespeichert. Sie können sie später ändern, indem Sie die Projektdatei bearbeiten.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Nächste Schritte
Weitere Informationen zur Implementierung und Verwendung von Visual Studio-Tools für die Arbeit mit Containern finden Sie in den folgenden Artikeln:
Debuggen von Apps in einem lokalen Container
Bereitstellen eines ASP.NET Containers in einer Containerregistrierung mithilfe von Visual Studio
Bereitstellen in Azure App Service
Bereitstellen in Azure-Container-Apps mit Visual Studio