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.
Wenn Sie ein Containerprojekt mit einer Dockerfile außerhalb von Visual Studio erstellen möchten, können Sie docker build (oder podman build) oder dotnet publish /t:PublishContainer auf der Kommandozeile bauen.
Wenn Sie den .NET SDK-Buildtyp verwenden, haben Sie keine Dockerfile, daher können Sie docker build oder podman build nicht verwenden; stattdessen können Sie dotnet publish /t:PublishContainer nutzen, um über die Befehlszeile zu erstellen.
Wenn Sie ein Containerprojekt mit einer Dockerfile außerhalb von Visual Studio erstellen möchten, können Sie es verwenden docker build oder dotnet publish /t:PublishContainer aus der Befehlszeile erstellen.
Wenn Sie den .NET SDK-Buildtyp verwenden, da Sie keine Dockerfile besitzen, können Sie docker build nicht nutzen; verwenden Sie stattdessen dotnet publish /t:PublishContainer, um über die Befehlszeile zu erstellen.
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 .
Voraussetzungen
- Docker Desktop.
- Visual Studio mit installierter ASP.NET- und Webentwicklung, Azure-Entwicklungsarbeitsauslastung und/oder .NET-Desktopentwicklungsworkload .
Verwenden Sie Docker-Build
Um eine containerisierte Lösung über die Befehlszeile zu erstellen, können Sie in der Regel den Befehl docker build <context> für jedes Projekt in der Projektmappe verwenden. Dabei müssen Sie das Argument für den Buildkontext angeben. Der Buildkontext eines Dockerfile auf dem lokalen Computer ist der Ordner, der als Arbeitsordner zum Generieren des Images verwendet wird. Beispielsweise ist es der Ordner, aus dem Sie Dateien kopieren, wenn Sie in den Container kopieren. In .NET Core-Projekten wird standardmäßig der Ordner verwendet, der die Lösungsdatei enthält (.sln oder SLNX). Dieses Argument wird als relativer Pfad angegeben und ist in der Regel „..“ für ein Dockerfile in einem Projektordner und für die Projektmappendatei im übergeordneten Ordner.
docker build -f Dockerfile ..
Bei .NET Framework-Projekten ist der Standardbuildkontext der Projektordner und nicht der Projektmappenordner.
Sie können den Buildkontext in der Projektdatei festlegen, indem Sie die eigenschaft DockerfileContext festlegen. Zum Beispiel
<PropertyGroup>
<DockerfileContext>contextfolder</DockerfileContext>
</PropertyGroup>
Verwenden von Docker-Build oder Podman-Build
Um eine containerisierte Lösung über die Befehlszeile zu erstellen, können Sie in der Regel den Befehl docker build <context> (oder podman build <context>) für jedes Projekt in der Projektmappe verwenden. Dabei müssen Sie das Argument für den Buildkontext angeben. Der Buildkontext eines Dockerfile auf dem lokalen Computer ist der Ordner, der als Arbeitsordner zum Generieren des Images verwendet wird. Beispielsweise ist es der Ordner, aus dem Sie Dateien kopieren, wenn Sie in den Container kopieren. In .NET Core-Projekten wird standardmäßig der Ordner verwendet, der die Lösungsdatei enthält (.sln oder SLNX). Dieses Argument wird als relativer Pfad angegeben und ist in der Regel „..“ für ein Dockerfile in einem Projektordner und für die Projektmappendatei im übergeordneten Ordner.
docker build -f Dockerfile ..
podman build -f Dockerfile ..
Sie können den Buildkontext in der Projektdatei festlegen, indem Sie die eigenschaft ContainerBuildContext festlegen. Zum Beispiel
<PropertyGroup>
<ContainerBuildContext>contextfolder</ContainerBuildContext>
</PropertyGroup>
Relative Pfade in der Dockerfile sind relativ zum Buildkontext. Wenn Sie den Kontext ändern, müssen Sie daher die relativen Pfade entsprechend aktualisieren.
Mit Visual Studio 17.11 und höher können Sie beim Hinzufügen der Docker-Unterstützung zu einem Projekt einen Ordner für den Buildkontext angeben. Wenn Sie den Buildkontext ändern möchten, können Sie die Dockerfile-Datei löschen (wenn keine anderen Änderungen vorhanden sind, die Sie beibehalten möchten), und führen Sie Hinzufügen der Docker-Unterstützungerneut aus, dieses Mal den neuen Buildkontext angeben. Die neue Dockerfile wird relative Pfade aktualisieren, um dem neuen Buildkontext zu entsprechen.
Wenn Sie einem Projekt Containerunterstützung hinzufügen, können Sie einen Ordner für den Buildkontext angeben. Wenn Sie den Build-Kontext ändern möchten, können Sie die Dockerfile-Datei löschen (vorausgesetzt, es gibt keine anderen Änderungen, die Sie beibehalten möchten), und Containerunterstützung hinzufügen erneut ausführen, diesmal den neuen Build-Kontext angeben. Die neue Dockerfile wird relative Pfade aktualisieren, um dem neuen Buildkontext zu entsprechen.
Verwenden von MSBuild
Anmerkung
In diesem Abschnitt wird beschrieben, wie Sie Ihre Container anpassen können, wenn Sie den Dockerfile-Containerbuildtyp auswählen. Wenn Sie den .NET SDK-Buildtyp verwenden, unterscheiden sich die Anpassungsoptionen, und die Informationen in diesem Artikel gelten nicht. Lesen Sie stattdessen Containerisierung einer .NET-Anwendung mit dotnet publish.
Dockerfiles, die von Visual Studio für .NET Framework-Projekten (und für .NET Core-Projekte erstellt wurden, die mit Versionen von Visual Studio vor Visual Studio 2017 Update 4 erstellt wurden) sind keine mehrstufigen Dockerfiles. Die Schritte in diesen Dockerfiles kompilieren Ihren Code nicht. Wenn Visual Studio stattdessen eine .NET Framework Dockerfile erstellt, kompiliert es zuerst Ihr Projekt mithilfe von MSBuild. Wenn dies erfolgreich ist, erstellt Visual Studio dann die Dockerfile-Datei, die einfach die Buildausgabe von MSBuild in das resultierende Docker-Image kopiert. Da die Schritte zum Kompilieren ihres Codes nicht in der Dockerfile enthalten sind, können Sie .NET Framework Dockerfiles nicht mit docker build über die Befehlszeile erstellen. Sie sollten MSBuild verwenden, um diese Projekte zu erstellen.
Um ein Image für ein einzelnes Docker-Containerprojekt zu erstellen, können Sie MSBuild mit der Befehlsoption /t:ContainerBuild verwenden. Dieser Befehl weist MSBuild an, das Ziel ContainerBuild anstelle des Standardziels Buildzu erstellen. Zum Beispiel:
MSBuild MyProject.csproj /t:ContainerBuild /p:Configuration=Release
Die Ausgabe ähnelt der, die im Fenster Ausgabe angezeigt wird, wenn Sie eine Projektmappe mit der IDE Visual Studio erstellen. Verwenden Sie immer /p:Configuration=Release, da in Fällen, in denen Visual Studio die Multistage-Buildoptimierung verwendet, Ergebnisse beim Erstellen der Debug--Konfiguration möglicherweise nicht wie erwartet sind. Weitere Informationen finden Sie unter zum Anpassen von Containerimages für Debugging.
Wenn Sie ein Docker Compose-Projekt verwenden, verwenden Sie diesen Befehl, um Images zu erstellen:
msbuild /p:SolutionPath=<solution-name>.sln /p:Configuration=Release docker-compose.dcproj
Informationen zum Anzeigen der MSBuild-Protokolle finden Sie unter Abrufen von Buildprotokollen mit MSBuild.
Kompilieren über die Befehlszeile
Visual Studio verwendet den Fast-Modus (sofern aktiviert), um ein Containerimage zu erstellen, das für die Entwicklung und das Debuggen am besten konfiguriert ist. Daher wird nicht empfohlen, die Docker-Buildbefehle aus dem Ausgabefenster nach einem Fast Mode-Build zu kopieren. Um ein Standardimage ohne nicht standardmäßige Optimierungen zu erstellen, können Sie mit der rechten Maustaste auf die Dockerfile-Datei klicken und die Option "Docker-Image erstellen" auswählen.
Visual Studio verwendet den Fast-Modus (sofern aktiviert), um ein Containerimage zu erstellen, das für die Entwicklung und das Debuggen am besten geeignet ist. Daher wird nicht empfohlen, die docker buildpodman build Befehle nach einem Schnellmodus-Build aus dem Ausgabefenster zu kopieren. Um ein Standardimage ohne nicht standardmäßige Optimierungen zu erstellen, können Sie mit der rechten Maustaste auf die Dockerfile-Datei klicken und die Option "Image erstellen " auswählen.
Visual Studio verwendet das dev Tag zum Festlegen von Bildern, die speziell für die Optimierung der Startzeit während des Debuggings vorbereitet wurden. Diese Bilder sollten jedoch nicht außerhalb des Kontexts von Visual Studio verwendet werden. Dieses Tag ist ein Hinweis darauf, dass die Bilder nicht standardmäßige Änderungen und Anpassungen aufweisen, z. B. um das Debuggen im Schnellmodus zu unterstützen. Siehe Anpassen von Docker-Containern in Visual Studio.