Visual Studio-Containertools mit ASP.NET CoreVisual Studio Container Tools with ASP.NET Core

Visual Studio 2017 und höhere Versionen unterstützen das Erstellen, Debuggen und Ausführen von ASP.NET Core-Container-Apps, die für .NET Core entwickelt werden.Visual Studio 2017 and later versions support building, debugging, and running containerized ASP.NET Core apps targeting .NET Core. Sowohl Windows- als auch Linux-Container werden unterstützt.Both Windows and Linux containers are supported.

Anzeigen oder Herunterladen von Beispielcode (Vorgehensweise zum Herunterladen)View or download sample code (how to download)

Erforderliche KomponentenPrerequisites

Installation und EinrichtungInstallation and setup

Lesen Sie vor der Installation von Docker zunächst Docker for Windows: What to know before you install (Docker Desktop für Windows: Was vor der Installation zu beachten ist).For Docker installation, first review the information at Docker for Windows: What to know before you install. Installieren Sie anschließend Docker für Windows.Next, install Docker For Windows.

Freigegebene Laufwerke in Docker für Windows müssen so konfiguriert sein, dass sie die Volumezuordnung und das Debuggen unterstützen.Shared Drives in Docker for Windows must be configured to support volume mapping and debugging. Klicken Sie mit der rechten Maustaste in der Taskleiste auf das Docker-Symbol, und rufen Sie anschließend Einstellungen > Freigegebene Laufwerke aus.Right-click the System Tray's Docker icon, select Settings, and select Shared Drives. Wählen Sie das Laufwerk aus, auf dem Docker Dateien speichert.Select the drive where Docker stores files. Klicken Sie auf Übernehmen.Click Apply.

Dialogfeld zur Auswahl des lokalen Laufwerks C, das für Container freigegeben werden soll

Tipp

Visual Studio 2017 Version 15.6 und höher zeigt später eine Eingabeaufforderung an, wenn die Freigegebenen Laufwerke nicht konfiguriert sind.Visual Studio 2017 versions 15.6 and later prompt when Shared Drives aren't configured.

Hinzufügen eines Projekts zu einem Docker-ContainerAdd a project to a Docker container

Zur Containerisierung eines ASP.NET Core-Projekts muss das Projekt .NET Core als Zielplattform verwenden.To containerize an ASP.NET Core project, the project must target .NET Core. Sowohl Linux- als auch Windows-Container werden unterstützt.Both Linux and Windows containers are supported.

Wenn Sie Docker-Unterstützung zu einem Projekt hinzufügen, können Sie zwischen einem Windows- oder einem Linux-Container auswählen.When adding Docker support to a project, choose either a Windows or a Linux container. Der Docker-Host muss den gleichen Containertyp ausführen.The Docker host must be running the same container type. Wenn Sie den Containertyp in der ausgeführten Docker-Instanz ändern möchten, klicken Sie mit der rechten Maustaste auf der Taskleiste auf das Docker-Symbol, und wählen Sie Switch to Windows containers (Zu Windows-Containern wechseln) oder Switch to Linux container (Zu Linux-Containern wechseln) aus.To change the container type in the running Docker instance, right-click the System Tray's Docker icon and choose Switch to Windows containers... or Switch to Linux containers....

Neue AppNew app

Wenn Sie mithilfe der Projektvorlage ASP.NET Core-Webanwendung eine neue App erstellen, aktivieren Sie das Kontrollkästchen Enable Docker Support (Docker-Unterstützung aktivieren):When creating a new app with the ASP.NET Core Web Application project templates, select the Enable Docker Support check box:

Kontrollkästchen „Enable Docker Support“ (Docker-Unterstützung aktivieren)

Wenn .NET Core das Zielframework ist, können Sie in der Dropdownliste OS (Betriebssystem) einen Containertyp auswählen.If the target framework is .NET Core, the OS drop-down allows for the selection of a container type.

Vorhandene AppExisting app

Es gibt für ASP.NET Core-Projekte, die auf .NET Core abzielen, zwei Möglichkeiten, Docker-Unterstützung über Tools hinzuzufügen.For ASP.NET Core projects targeting .NET Core, there are two options for adding Docker support via the tooling. Öffnen Sie das Projekt in Visual Studio, und wählen Sie eine der folgenden Optionen aus:Open the project in Visual Studio, and choose one of the following options:

  • Wählen Sie aus dem Projektmenü Docker-Unterstützung aus.Select Docker Support from the Project menu.
  • Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und rufen Sie anschließend Hinzufügen > Docker-Unterstützung auf.Right-click the project in Solution Explorer and select Add > Docker Support.

Mit den Containertools von Visual Studio können Sie Docker nicht zu einem vorhandenen ASP.NET Core-Projekt hinzufügen, das auf .NET Framework abzielt.The Visual Studio Container Tools don't support adding Docker to an existing ASP.NET Core project targeting .NET Framework.

Übersicht über die Dockerfile-DateiDockerfile overview

Eine Dockerfile-Datei, der wichtigste Bestandteil beim Erstellen eines endgültigen Docker-Images, wird dem Projektstamm hinzugefügt.A Dockerfile, the recipe for creating a final Docker image, is added to the project root. Verweisen Sie auf einen Dockerfile-Verweis, damit Sie einen Überblick über die darin enthaltenen Befehle erlangen.Refer to Dockerfile reference for an understanding of the commands within it. Diese spezielle Dockerfile-Datei verwendet einen mehrstufigen Build, der vier unterschiedlich benannte Buildschritte enthält:This particular Dockerfile uses a multi-stage build with four distinct, named build stages:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 AS base
WORKDIR /app
EXPOSE 59518
EXPOSE 44364

FROM mcr.microsoft.com/dotnet/core/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"]

Die obige Dockerfile-Datei basiert auf dem microsoft/dotnet-Image.The preceding Dockerfile is based on the microsoft/dotnet image. Dieses Basisimage enthält die ASP.NET Core-Runtime und NuGet-Pakete.This base image includes the ASP.NET Core runtime and NuGet packages. Zur Verbesserung der Startleistung wurden die Pakete mit einem JIT-Compiler (Just-In-Time) übersetzt.The packages are just-in-time (JIT) compiled to improve startup performance.

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.When the new project dialog's Configure for HTTPS check box is checked, the Dockerfile exposes two ports. Ein Port wird für den HTTP-Datenverkehr, der andere für HTTPS verwendet.One port is used for HTTP traffic; the other port is used for HTTPS. Wenn dieses Kontrollkästchen nicht aktiviert ist, wird nur der Port 80 für den HTTP-Datenverkehr verfügbar gemacht.If the check box isn't checked, a single port (80) is exposed for HTTP traffic.

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 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"]

Die obige Dockerfile-Datei basiert auf dem microsoft/aspnetcore-Image.The preceding Dockerfile is based on the microsoft/aspnetcore image. Dieses Basisimage enthält die ASP.NET Core-NuGet-Pakete, die mit einem JIT-Compiler übersetzt wurden und dadurch die Startleistung verbessern.This base image includes the ASP.NET Core NuGet packages, which are just-in-time (JIT) compiled to improve startup performance.

Hinzufügen eines Containerorchestrators zu einer AppAdd container orchestrator support to an app

In Version 15.7 oder in früheren Versionen von Visual Studio 2017 wird als Containerorchestrierungslösung ausschließlich Docker Compose unterstützt.Visual Studio 2017 versions 15.7 or earlier support Docker Compose as the sole container orchestration solution. Die Docker Compose-Artefakte werden über Hinzufügen > Docker-Unterstützung hinzugefügt.The Docker Compose artifacts are added via Add > Docker Support.

Ab Version 15.8 von Visual Studio 2017 wird eine Orchestrierungslösung erst bei Aufforderung hinzugefügt.Visual Studio 2017 versions 15.8 or later add an orchestration solution only when instructed. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf das Projekt, und rufen Sie Hinzufügen > Container Orchestrator Support (Unterstützung für Containerorchestrator) auf.Right-click the project in Solution Explorer and select Add > Container Orchestrator Support. Es werden zwei verschiedene Auswahlmöglichkeiten angeboten: Docker Compose und Service Fabric.Two different choices are offered: Docker Compose and Service Fabric.

Docker ComposeDocker Compose

Die Containertools von Visual Studio fügen der Projektmappe ein docker-compose-Projekt mit den folgenden Dateien hinzu:The Visual Studio Container Tools add a docker-compose project to the solution with the following files:

  • docker-compose.dcproj: die Projektdatei.docker-compose.dcproj – The file representing the project. Diese enthält ein <DockerTargetOS>-Element, mit dem das zu verwendende Betriebssystem angegeben wird.Includes a <DockerTargetOS> element specifying the OS to be used.
  • .dockerignore: Diese Datei enthält eine Liste mit Mustern für Dateien und Verzeichnisse, die beim Generieren eines Buildkontexts ausgeschlossen werden sollen..dockerignore – Lists the file and directory patterns to exclude when generating a build context.
  • docker-compose.yml: die Docker Compose-Basisdatei zum Definieren der Sammlung von Images, die mit docker-compose build und docker-compose run erstellt bzw. ausgeführt werden soll.docker-compose.yml – The base Docker Compose file used to define the collection of images built and run with docker-compose build and docker-compose run, respectively.
  • docker-compose.override.yml: eine optionale Datei, die von Docker Compose gelesen wird und Einstellungen zur Überschreibung von Konfigurationen für Dienste enthält.docker-compose.override.yml – An optional file, read by Docker Compose, with configuration overrides for services. Visual Studio führt docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" aus, um die Dateien zusammenzuführen.Visual Studio executes docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" to merge these files.

Die Datei docker-compose.yml verweist auf den Namen des Images, das beim Ausführen des Projekts erstellt wird:The docker-compose.yml file references the name of the image that's created when the project runs:

version: '3.4'

services:
  hellodockertools:
    image: ${DOCKER_REGISTRY}hellodockertools
    build:
      context: .
      dockerfile: HelloDockerTools/Dockerfile

In dem zuvor genannten Beispiel generiert image: hellodockertools das Image hellodockertools:dev, wenn die App im Modus Debuggen ausgeführt wird.In the preceding example, image: hellodockertools generates the image hellodockertools:dev when the app runs in Debug mode. Das hellodockertools:latest-Image wird generiert, wenn die App im Modus Release ausgeführt wird.The hellodockertools:latest image is generated when the app runs in Release mode.

Stellen Sie dem Imagenamen den Benutzernamen für Docker Hub voran (z.B. dockerhubusername/hellodockertools), wenn das Image per Push in die Registrierung übertragen werden soll.Prefix the image name with the Docker Hub username (for example, dockerhubusername/hellodockertools) if the image is pushed to the registry. Stattdessen können Sie auch den Imagenamen ändern, sodass er die private Registrierungs-URL, die von der Konfiguration abhängig ist (z.B. privateregistry.domain.com/hellodockertools) enthält.Alternatively, change the image name to include the private registry URL (for example, privateregistry.domain.com/hellodockertools) depending on the configuration.

Wenn Sie ein anderes Verhalten basierend auf der Buildkonfiguration wünschen (z.B. Debug oder Release), fügen Sie konfigurationsspezifische docker-compose Dateien hinzu.If you want different behavior based on the build configuration (for example, Debug or Release), add configuration-specific docker-compose files. Die Dateien sollten entsprechend der Buildkonfiguration benannt werden (z.B. docker-compose.vs.debug.yml und docker-compose.vs.release.yml) und am gleichen Speicherort wie die Datei docker-compose-override.yml gespeichert werden.The files should be named according to the build configuration (for example, docker-compose.vs.debug.yml and docker-compose.vs.release.yml) and placed in the same location as the docker-compose-override.yml file.

Mithilfe der konfigurationsspezifischen Außerkraftsetzungsdateien können Sie verschiedene Konfigurationseinstellungen (z.B. Umgebungsvariablen oder Einstiegspunkte) für Debug- und Releasebuildkonfigurationen angeben.Using the configuration-specific override files, you can specify different configuration settings (such as environment variables or entry points) for Debug and Release build configurations.

Service FabricService Fabric

Zusätzlich zu den grundlegenden Voraussetzungen ist für Service Fabric als Orchestrierungslösung Folgendes erforderlich:In addition to the base Prerequisites, the Service Fabric orchestration solution demands the following prerequisites:

Die Ausführung von Linux-Containern auf dem lokalen Entwicklungscluster unter Windows wird von Service Fabric nicht unterstützt.Service Fabric doesn't support running Linux containers in the local development cluster on Windows. Wenn für das Projekt bereits ein Linux-Container verwendet wird, fordert Visual Studio Sie dazu auf, stattdessen einen Windows-Container zu nutzen.If the project is already using a Linux container, Visual Studio prompts to switch to Windows containers.

Die Containertools von Visual Studio führen die folgenden Aufgaben aus:The Visual Studio Container Tools do the following tasks:

  • Ein Service Fabric-Anwendungsprojekt mit dem Namen <Projektname>Application wird der Projektmappe hinzugefügt.Adds a <project_name>Application Service Fabric Application project to the solution.

  • Eine Dockerfile-Datei und eine DOCKERIGNORE-Datei werden dem ASP.NET Core-Projekt hinzugefügt.Adds a Dockerfile and a .dockerignore file to the ASP.NET Core project. Wenn im ASP.NET Core-Projekt bereits eine Dockerfile-Datei vorhanden ist, wird diese in Dockerfile.original umbenannt.If a Dockerfile already exists in the ASP.NET Core project, it's renamed to Dockerfile.original. Erstellt wird eine neue Dockerfile-Datei, die der folgenden ähnelt:A new Dockerfile, similar to the following, is created:

    # See https://aka.ms/containerimagehelp for information on how to use Windows Server 1709 containers with Service Fabric.
    # FROM microsoft/aspnetcore:2.0-nanoserver-1709
    FROM microsoft/aspnetcore:2.0-nanoserver-sac2016
    ARG source
    WORKDIR /app
    COPY ${source:-obj/Docker/publish} .
    ENTRYPOINT ["dotnet", "HelloDockerTools.dll"]
    
  • Ein <IsServiceFabricServiceProject>-Element wird der CSPROJ-Datei des ASP.NET Core-Projekts hinzugefügt:Adds an <IsServiceFabricServiceProject> element to the ASP.NET Core project's .csproj file:

    <IsServiceFabricServiceProject>True</IsServiceFabricServiceProject>
    
  • Ein PackageRoot-Ordner wird dem ASP.NET Core-Projekt hinzugefügt.Adds a PackageRoot folder to the ASP.NET Core project. Der Ordner enthält das Dienstmanifest und die Einstellungen für den neuen Dienst.The folder includes the service manifest and settings for the new service.

Weitere Informationen finden Sie unter Bereitstellen einer .NET-App in einem Windows-Container in Azure Service Fabric.For more information, see Deploy a .NET app in a Windows container to Azure Service Fabric.

DebugDebug

Wählen Sie in der Symbolleiste im Dropdownmenü „Debuggen“ die Option Docker aus, und starten Sie das Debuggen der Anwendung.Select Docker from the debug drop-down in the toolbar, and start debugging the app. In der Ansicht Docker im Fenster Ausgabe werden die folgenden Aktionen angezeigt:The Docker view of the Output window shows the following actions taking place:

  • Das Tag 2.1-aspnetcore-runtime des microsoft/dotnet-Runtimeimages wird abgerufen (falls das Image noch nicht im Cache vorhanden ist).The 2.1-aspnetcore-runtime tag of the microsoft/dotnet runtime image is acquired (if not already in the cache). Das Image installiert die Runtimes für ASP.NET Core und .NET Core sowie die zugehörigen Bibliotheken.The image installs the ASP.NET Core and .NET Core runtimes and associated libraries. Es ist für die Ausführung von ASP.NET Core-Apps in einer Produktionsumgebung optimiert.It's optimized for running ASP.NET Core apps in production.
  • Die Umgebungsvariable ASPNETCORE_ENVIRONMENT wird innerhalb des Containers auf Development festgelegt.The ASPNETCORE_ENVIRONMENT environment variable is set to Development within the container.
  • Zwei dynamisch zugewiesene Ports werden verfügbar gemacht, wobei einer für HTTP und der andere für HTTPS verwendet wird.Two dynamically assigned ports are exposed: one for HTTP and one for HTTPS. Der Port, der „localhost“ zugewiesen ist, kann mit dem Befehl docker ps abgefragt werden.The port assigned to localhost can be queried with the docker ps command.
  • Die App wird in den Container kopiert.The app is copied to the container.
  • Der Standardbrowser wird mit dem dynamisch zugewiesenen Port gestartet, wobei der Debugger an den Container angehängt wird.The default browser is launched with the debugger attached to the container using the dynamically assigned port.

Das resultierende Docker-Image der App wird mit dem Tag dev versehen.The resulting Docker image of the app is tagged as dev. Das Image basiert auf dem Tag 2.1-aspnetcore-runtime des Basisimages microsoft/dotnet.The image is based on the 2.1-aspnetcore-runtime tag of the microsoft/dotnet base image. Führen Sie im Fenster Paket-Manager-Konsole den Befehl docker images aus.Run the docker images command in the Package Manager Console (PMC) window. Die Images auf dem Computer werden angezeigt:The images on the machine are displayed:

REPOSITORY        TAG                     IMAGE ID      CREATED         SIZE
hellodockertools  dev                     d72ce0f1dfe7  30 seconds ago  255MB
microsoft/dotnet  2.1-aspnetcore-runtime  fcc3887985bb  6 days ago      255MB
  • Das Runtime-Image microsoft/aspnetcore wird geladen (falls es sich nicht bereits im Cache befindet).The microsoft/aspnetcore runtime image is acquired (if not already in the cache).
  • Die Umgebungsvariable ASPNETCORE_ENVIRONMENT wird innerhalb des Containers auf Development festgelegt.The ASPNETCORE_ENVIRONMENT environment variable is set to Development within the container.
  • Port 80 wird verfügbar gemacht und einem dynamisch zugewiesenen Port für Localhost zugewiesen.Port 80 is exposed and mapped to a dynamically assigned port for localhost. Der Port wird vom Docker-Host bestimmt und kann mit dem Befehl docker ps abgefragt werden.The port is determined by the Docker host and can be queried with the docker ps command.
  • Die App wird in den Container kopiert.The app is copied to the container.
  • Der Standardbrowser wird mit dem dynamisch zugewiesenen Port gestartet, wobei der Debugger an den Container angehängt wird.The default browser is launched with the debugger attached to the container using the dynamically assigned port.

Das resultierende Docker-Image der App wird mit dem Tag dev versehen.The resulting Docker image of the app is tagged as dev. Das Image basiert auf dem Basisimage microsoft/aspnetcore.The image is based on the microsoft/aspnetcore base image. Führen Sie im Fenster Paket-Manager-Konsole den Befehl docker images aus.Run the docker images command in the Package Manager Console (PMC) window. Die Images auf dem Computer werden angezeigt:The images on the machine are displayed:

REPOSITORY            TAG  IMAGE ID      CREATED        SIZE
hellodockertools      dev  5fafe5d1ad5b  4 minutes ago  347MB
microsoft/aspnetcore  2.0  c69d39472da9  13 days ago    347MB

Hinweis

Das dev-Image enthält keine App-Inhalte, da Debug-Konfigurationen durch das Einbinden von Volumes für die iterative Funktionalität sorgen.The dev image lacks the app contents, as Debug configurations use volume mounting to provide the iterative experience. Verwenden Sie zum Verschieben eines Images die Konfiguration Release.To push an image, use the Release configuration.

Führen Sie in der Paket-Manager-Konsole den Befehl docker ps aus.Run the docker ps command in PMC. Beachten Sie, dass die App mithilfe des Containers ausgeführt wird:Notice the app is running using the container:

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

Bearbeiten und FortfahrenEdit and continue

Änderungen an statischen Dateien und Razor-Ansichten werden automatisch aktualisiert, wobei kein Kompilierungsschritt erforderlich ist.Changes to static files and Razor views are automatically updated without the need for a compilation step. Nehmen Sie die Änderung vor, speichern Sie die Datei, und aktualisieren Sie die Browseransicht, um die Aktualisierung anzuzeigen.Make the change, save, and refresh the browser to view the update.

Änderungen an Codedateien erfordern eine Kompilierung und einen Neustart von Kestrel im Container.Code file modifications require compilation and a restart of Kestrel within the container. Nachdem Sie die Änderung vorgenommen haben, drücken Sie CTRL+F5, um den Prozess durchzuführen und die App im Container zu starten.After making the change, use CTRL+F5 to perform the process and start the app within the container. Der Docker-Container wird nicht erneut erstellt oder angehalten.The Docker container isn't rebuilt or stopped. Führen Sie in der Paket-Manager-Konsole den Befehl docker ps aus.Run the docker ps command in PMC. Beachten Sie, dass der ursprüngliche Container immer noch genau so ausgeführt wird wie vor zehn Minuten:Notice the original container is still running as of 10 minutes ago:

CONTAINER ID        IMAGE                  COMMAND                   CREATED             STATUS              PORTS                   NAMES
baf9a678c88d        hellodockertools:dev   "C:\\remote_debugge..."   10 minutes ago      Up 10 minutes       0.0.0.0:37630->80/tcp   dockercompose4642749010770307127_hellodockertools_1

Veröffentlichen von Docker-ImagesPublish Docker images

Nachdem der Entwicklungs- und Debugzyklus für die App abgeschlossen wurde, kann mit den Containertools von Visual Studio das Produktionsimage der App erstellt werden.Once the develop and debug cycle of the app is completed, the Visual Studio Container Tools assist in creating the production image of the app. Wählen Sie im Dropdownmenü „Konfiguration“ die Option Release aus, und erstellen Sie die App.Change the configuration drop-down to Release and build the app. Die Tools rufen das Kompilierungs-/Veröffentlichungsimage von Docker Hub ab (falls es nicht bereits im Cache vorhanden ist).The tooling acquires the compile/publish image from Docker Hub (if not already in the cache). Ein Image mit dem Tag latest wird erstellt und kann mittels Push an die private Registrierung oder an den Docker-Hub übertragen werden.An image is produced with the latest tag, which can be pushed to the private registry or Docker Hub.

Mit dem Befehl docker images können Sie die Liste der Images in der Paket-Manager-Konsole anzeigen.Run the docker images command in PMC to see the list of images. Dadurch werden Informationen angezeigt, die mit denen der folgenden Ausgabe vergleichbar sind:Output similar to the following is displayed:

REPOSITORY        TAG                     IMAGE ID      CREATED             SIZE
hellodockertools  latest                  e3984a64230c  About a minute ago  258MB
hellodockertools  dev                     d72ce0f1dfe7  4 minutes ago       255MB
microsoft/dotnet  2.1-sdk                 9e243db15f91  6 days ago          1.7GB
microsoft/dotnet  2.1-aspnetcore-runtime  fcc3887985bb  6 days ago          255MB
REPOSITORY                  TAG     IMAGE ID      CREATED         SIZE
hellodockertools            latest  cd28f0d4abbd  12 seconds ago  349MB
hellodockertools            dev     5fafe5d1ad5b  23 minutes ago  347MB
microsoft/aspnetcore-build  2.0     7fed40fbb647  13 days ago     2.02GB
microsoft/aspnetcore        2.0     c69d39472da9  13 days ago     347MB

Die microsoft/aspnetcore-build- und microsoft/aspnetcore-Images, die in der obigen Ausgabe zu sehen sind, werden ab .NET Core 2.1 durch microsoft/dotnet-Images ersetzt.The microsoft/aspnetcore-build and microsoft/aspnetcore images listed in the preceding output are replaced with microsoft/dotnet images as of .NET Core 2.1. Weitere Informationen finden Sie in der Ankündigung zur Migration der Docker-Repositorys.For more information, see the Docker repositories migration announcement.

Hinweis

Der Befehl docker images gibt Vermittlerimages mit Repositorynamen und -tags zurück, die als <none> gekennzeichnet sind (obenstehend nicht aufgeführt).The docker images command returns intermediary images with repository names and tags identified as <none> (not listed above). Diese unbenannten Images werden von der mehrstufig erstellten Dockerfile-Datei erstellt.These unnamed images are produced by the multi-stage build Dockerfile. Sie verbessern die Effizienz der Erstellung des endgültigen Images. D.h., nur die notwendigen Ebenen werden erneut erstellt, wenn Änderungen auftreten.They improve the efficiency of building the final image—only the necessary layers are rebuilt when changes occur. Wenn die Vermittlerimages nicht mehr benötigt werden, löschen Sie sie über den Befehl docker rmi.When the intermediary images are no longer needed, delete them using the docker rmi command.

Möglicherweise wird angenommen, dass das Produktions- oder Releaseimage im Vergleich zum dev-Image kleiner ist.There may be an expectation for the production or release image to be smaller in size by comparison to the dev image. Aufgrund der Volumezuordnung wurden der Debugger und die App über den lokalen Computer und nicht innerhalb des Containers ausgeführt.Because of the volume mapping, the debugger and app were running from the local machine and not within the container. Im neusten Image wurde der benötigte App-Code gepackt, um die App auf einem Hostcomputer auszuführen.The latest image has packaged the necessary app code to run the app on a host machine. Aus diesem Grund ist das Delta die Größe des App-Codes.Therefore, the delta is the size of the app code.

Zusätzliche RessourcenAdditional resources