Didacticiel : conteneur d’une application .NET CoreTutorial: Containerize a .NET Core app

Dans ce didacticiel, vous allez apprendre à créer un conteneur pour une application .NET Core avec l’arrimeur.In this tutorial, you'll learn how to containerize a .NET Core application with Docker. Les conteneurs présentent de nombreuses fonctionnalités et avantages, tels que la mise en place d’une infrastructure immuable, la fourniture d’une architecture portable et l’évolutivité.Containers have many features and benefits, such as being an immutable infrastructure, providing a portable architecture, and enabling scalability. L’image vous permettra de créer des conteneurs pour votre environnement de développement local, votre cloud privé ou votre cloud public.The image can be used to create containers for your local development environment, private cloud, or public cloud.

Dans ce tutoriel, vous allez :In this tutorial, you:

  • Créer et publier une application .NET Core simpleCreate and publish a simple .NET Core app
  • Créer et configurer un Dockerfile pour .NET CoreCreate and configure a Dockerfile for .NET Core
  • Générer une image DockerBuild a Docker image
  • Créer et exécuter un conteneur DockerCreate and run a Docker container

Vous découvrirez la création d’un conteneur Docker et les tâches de déploiement pour une application .NET Core.You'll understand the Docker container build and deploy tasks for a .NET Core application. La plateforme d’ancrage utilise le moteur de l’ancrage pour générer et empaqueter rapidement des applications en tant qu’images de l' ancrage.The Docker platform uses the Docker engine to quickly build and package apps as Docker images. Ces images sont écrites au format Dockerfile pour être déployées et exécutées dans un conteneur en couches.These images are written in the Dockerfile format to be deployed and run in a layered container.

Notes

Ce didacticiel ne concerne pas les applications ASP.net core.This tutorial is not for ASP.NET Core apps. Si vous utilisez ASP.NET Core, consultez le didacticiel apprendre à déconteneurr une application ASP.net Core .If you're using ASP.NET Core, see the Learn how to containerize an ASP.NET Core application tutorial.

PrérequisPrerequisites

Installez les éléments requis suivants :Install the following prerequisites:

  • SDK .NET Core 3,1.NET Core 3.1 SDK
    Si .NET Core est installé, utilisez la commande dotnet --info pour identifier le Kit SDK que vous utilisez.If you have .NET Core installed, use the dotnet --info command to determine which SDK you're using.
  • Docker Community EditionDocker Community Edition
  • Un dossier de travail temporaire pour le Dockerfile et un exemple d’application .NET Core.A temporary working folder for the Dockerfile and .NET Core example app. Dans ce didacticiel, le nom docker-Worker est utilisé comme dossier de travail.In this tutorial, the name docker-working is used as the working folder.

Créer une application .NET CoreCreate .NET Core app

Vous avez besoin d’une application .NET Core que le conteneur Docker exécutera.You need a .NET Core app that the Docker container will run. Ouvrez votre terminal, créez un dossier de travail si ce n’est déjà fait, et accédez-y.Open your terminal, create a working folder if you haven't already, and enter it. Dans le dossier de travail, exécutez la commande suivante pour créer un nouveau projet dans un sous-répertoire nommé app:In the working folder, run the following command to create a new project in a subdirectory named app:

dotnet new console -o App -n NetCore.Docker

Votre arborescence de dossiers doit ressembler à ce qui suit :Your folder tree will look like the following:

docker-working
    └──App
        ├──NetCore.Docker.csproj
        ├──Program.cs
        └──obj
            ├──NetCore.Docker.csproj.nuget.dgspec.json
            ├──NetCore.Docker.csproj.nuget.g.props
            ├──NetCore.Docker.csproj.nuget.g.targets
            ├──project.assets.json
            └──project.nuget.cache

La dotnet new commande crée un dossier nommé app et génère une application console « Hello World ».The dotnet new command creates a new folder named App and generates a "Hello World" console application. Modifiez les répertoires et accédez au dossier de l' application , à partir de votre session terminal.Change directories and navigate into the App folder, from your terminal session. Utilisez la dotnet run commande pour démarrer l’application.Use the dotnet run command to start the app. L’application s’exécute et s’affiche Hello World! sous la commande :The application will run, and print Hello World! below the command:

dotnet run
Hello World!

Le modèle par défaut crée une application qui s’imprime sur le terminal, puis se termine immédiatement.The default template creates an app that prints to the terminal and then immediately terminates. Pour ce tutoriel, vous utiliserez une application qui effectue une boucle indéfiniment.For this tutorial, you'll use an app that loops indefinitely. Ouvrez le fichier Program.cs dans un éditeur de texte.Open the Program.cs file in a text editor.

Conseil

Si vous utilisez Visual Studio Code, à partir de la session Terminal précédente, tapez la commande suivante :If you're using Visual Studio Code, from the previous terminal session type the following command:

code .

Le dossier d' application qui contient le projet s’ouvre dans Visual Studio code.This will open the App folder that contains the project in Visual Studio Code.

Le Program.cs doit ressembler au code C# suivant :The Program.cs should look like the following C# code:

using System;

namespace NetCore.Docker
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Remplacez le fichier par le code suivant qui compte les nombres chaque seconde :Replace the file with the following code that counts numbers every second:

using System;
using System.Threading.Tasks;

namespace NetCore.Docker
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var counter = 0;
            var max = args.Length != 0 ? Convert.ToInt32(args[0]) : -1;
            while (max == -1 || counter < max)
            {
                Console.WriteLine($"Counter: {++counter}");
                await Task.Delay(1000);
            }
        }
    }
}

Enregistrez le fichier et effectuez un nouveau avec dotnet run.Save the file and test the program again with dotnet run. N’oubliez pas que cette application s’exécute indéfiniment.Remember that this app runs indefinitely. Utilisez la commande Annuler Ctrl + C pour l’arrêter.Use the cancel command Ctrl+C to stop it. Voici un exemple de sortie :The following is an example output:

dotnet run
Counter: 1
Counter: 2
Counter: 3
Counter: 4
^C

Si vous envoyez un nombre à l’application sur la ligne de commande, l’application comptera uniquement jusqu’à ce montant puis se fermera.If you pass a number on the command line to the app, it will only count up to that amount and then exit. Effectuez un test avec dotnet run -- 5 pour compter jusqu’à cinq.Try it with dotnet run -- 5 to count to five.

Important

Tous les paramètres après -- sont transmis à votre application au lieu d’être transmis à la commande dotnet run.Any parameters after -- are not passed to the dotnet run command and instead are passed to your application.

Publier une application .NET CorePublish .NET Core app

Avant d’ajouter l’application .NET Core à l’image de l’ancrer, vous devez d’abord la publier.Before adding the .NET Core app to the Docker image, first it must be published. Il est préférable que le conteneur exécute la version publiée de l’application.It is best to have the container run the published version of the app. Pour publier l’application, exécutez la commande suivante :To publish the app, run the following command:

dotnet publish -c Release

Cette commande compile votre application dans le dossier publish.This command compiles your app to the publish folder. Le chemin du dossier publish à partir du dossier de travail doit être .\App\bin\Release\netcoreapp3.1\publish\The path to the publish folder from the working folder should be .\App\bin\Release\netcoreapp3.1\publish\

Dans le dossier de l' application , accédez à la liste des répertoires du dossier de publication pour vérifier que le fichier Netcore. dockr. dll a été créé.From the App folder, get a directory listing of the publish folder to verify that the NetCore.Docker.dll file was created.

dir .\bin\Release\netcoreapp3.1\publish\

    Directory: C:\Users\dapine\App\bin\Release\netcoreapp3.1\publish

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        4/27/2020   8:27 AM            434 NetCore.Docker.deps.json
-a----        4/27/2020   8:27 AM           6144 NetCore.Docker.dll
-a----        4/27/2020   8:27 AM         171520 NetCore.Docker.exe
-a----        4/27/2020   8:27 AM            860 NetCore.Docker.pdb
-a----        4/27/2020   8:27 AM            154 NetCore.Docker.runtimeconfig.json

Créer le DockerfileCreate the Dockerfile

Le fichier Dockerfile est utilisé par la commande docker build pour créer une image de conteneur.The Dockerfile file is used by the docker build command to create a container image. Ce fichier est un fichier texte nommé fichier dockerfile qui n’a pas d’extension.This file is a text file named Dockerfile that doesn't have an extension.

Créez un fichier nommé fichier dockerfile dans le répertoire contenant le fichier . csproj et ouvrez-le dans un éditeur de texte.Create a file named Dockerfile in directory containing the .csproj and open it in a text editor. Ce didacticiel utilise l’image d’exécution ASP.NET Core (qui contient l’image du Runtime .NET Core) et correspond à l’application console .NET Core.This tutorial will use the ASP.NET Core runtime image (which contains the .NET Core runtime image) and corresponds with the .NET Core console application.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

Notes

L’image ASP.NET Core Runtime est utilisée intentionnellement ici, bien que mcr.microsoft.com/dotnet/core/runtime:3.1 l’image puisse avoir été utilisée.The ASP.NET Core runtime image is used intentionally here, although the mcr.microsoft.com/dotnet/core/runtime:3.1 image could have been used.

Le FROM mot clé requiert un nom d’image de conteneur d’ancrage complet.The FROM keyword requires a fully qualified Docker container image name. Le Container Registry Microsoft (mcr.microsoft.com) est un syndicat de l’arrimeur d’ancrage, qui héberge des conteneurs accessibles publiquement.The Microsoft Container Registry (MCR, mcr.microsoft.com) is a syndicate of Docker Hub - which hosts publicly accessible containers. Le dotnet/core segment est le référentiel de conteneurs, où le aspnet segment est le nom de l’image de conteneur.The dotnet/core segment is the container repository, where as the aspnet segment is the container image name. L’image est marquée avec 3.1, qui est utilisé pour le contrôle de version.The image is tagged with 3.1, which is used for versioning. Par conséquent mcr.microsoft.com/dotnet/core/aspnet:3.1 , est le Runtime .net Core 3,1.Thus, mcr.microsoft.com/dotnet/core/aspnet:3.1 is the .NET Core 3.1 runtime. Veillez à extraire la version du runtime qui correspond au runtime ciblé par votre kit de développement logiciel (SDK).Make sure that you pull the runtime version that matches the runtime targeted by your SDK. Par exemple, l’application créée dans la section précédente utilisait le kit de développement logiciel (SDK) .NET Core 3,1 et l’image de base référencée dans le fichier dockerfile est marquée avec 3,1.For example, the app created in the previous section used the .NET Core 3.1 SDK and the base image referred to in the Dockerfile is tagged with 3.1.

Enregistrez le fichier Dockerfile.Save the Dockerfile file. La structure de répertoires du dossier de travail doit ressembler à ce qui suit.The directory structure of the working folder should look like the following. Certains fichiers et dossiers de niveau supérieur ont été omis pour économiser de l’espace dans l’article :Some of the deeper-level files and folders have been omitted to save space in the article:

docker-working
    └──App
        ├──Dockerfile
        ├──NetCore.Docker.csproj
        ├──Program.cs
        ├──bin
        │   └──Release
        │       └──netcoreapp3.1
        │           └──publish
        │               ├──NetCore.Docker.deps.json
        │               ├──NetCore.Docker.exe
        │               ├──NetCore.Docker.dll
        │               ├──NetCore.Docker.pdb
        │               └──NetCore.Docker.runtimeconfig.json
        └──obj
            └──...

Dans votre terminal, exécutez la commande suivante :From your terminal, run the following command:

docker build -t counter-image -f Dockerfile .

Docker traitera chaque ligne du Dockerfile.Docker will process each line in the Dockerfile. L’élément . de la commande docker build indique à Docker d’utiliser le dossier actif pour rechercher un Dockerfile.The . in the docker build command tells Docker to use the current folder to find a Dockerfile. Cette commande génère l’image et crée un référentiel local nommé Counter-image qui pointe vers cette image.This command builds the image and creates a local repository named counter-image that points to that image. Une fois cette commande terminée, exécutez docker images pour afficher une liste des images installées :After this command finishes, run docker images to see a list of images installed:

docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
counter-image                           latest              e6780479db63        4 days ago          190MB
mcr.microsoft.com/dotnet/core/aspnet    3.1                 e6780479db63        4 days ago          190MB

Notez que les deux images partagent la même valeur IMAGE ID.Notice that the two images share the same IMAGE ID value. La valeur est la même dans les deux images, car la seule commande dans le Dockerfile basait la nouvelle image sur une image existante.The value is the same between both images because the only command in the Dockerfile was to base the new image on an existing image. Nous allons ajouter trois commandes au fichier dockerfile.Let's add three commands to the Dockerfile. Chaque commande crée une nouvelle couche d’image avec la commande finale représentant le point d’entrée de dépôt d' image de compteur vers.Each command creates a new image layer with the final command representing the counter-image repository entry points to.

COPY bin/Release/netcoreapp3.1/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "NetCore.Docker.dll"]

La commande COPY indique à Docker de copier le dossier spécifié sur votre ordinateur, dans un dossier du conteneur.The COPY command tells Docker to copy the specified folder on your computer to a folder in the container. Dans cet exemple, le dossier Publish est copié dans un dossier nommé app dans le conteneur.In this example, the publish folder is copied to a folder named App in the container.

La WORKDIR commande modifie le répertoire actif à l’intérieur du conteneur en app.The WORKDIR command changes the current directory inside of the container to App.

La commande suivante, ENTRYPOINT, indique à Docker de configurer le conteneur afin de l’exécuter comme un fichier exécutable.The next command, ENTRYPOINT, tells Docker to configure the container to run as an executable. Au démarrage du conteneur, la commande ENTRYPOINT s’exécute.When the container starts, the ENTRYPOINT command runs. Lorsque cette commande se termine, le conteneur s’arrête automatiquement.When this command ends, the container will automatically stop.

Dans votre terminal, exécutez docker build -t counter-image -f Dockerfile . puis, une fois la commande terminée, exécutez docker images.From your terminal, run docker build -t counter-image -f Dockerfile . and when that command finishes, run docker images.

docker build -t counter-image -f Dockerfile .
Sending build context to Docker daemon  1.117MB
Step 1/4 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
 ---> e6780479db63
Step 2/4 : COPY bin/Release/netcoreapp3.1/publish/ App/
 ---> d1732740eed2
Step 3/4 : WORKDIR /App
 ---> Running in b1701a42f3ff
Removing intermediate container b1701a42f3ff
 ---> 919aab5b95e3
Step 4/4 : ENTRYPOINT ["dotnet", "NetCore.Docker.dll"]
 ---> Running in c12aebd26ced
Removing intermediate container c12aebd26ced
 ---> cd11c3df9b19
Successfully built cd11c3df9b19
Successfully tagged counter-image:latest

docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
counter-image                           latest              cd11c3df9b19        41 seconds ago      190MB
mcr.microsoft.com/dotnet/core/aspnet    3.1                 e6780479db63        4 days ago          190MB

Chaque commande dans le Dockerfile a généré une couche et créé une valeur IMAGE ID.Each command in the Dockerfile generated a layer and created an IMAGE ID. L’ID de l' image finale (la vôtre sera différente) est cd11c3df9b19 et suivant, vous allez créer un conteneur basé sur cette image.The final IMAGE ID (yours will be different) is cd11c3df9b19 and next you'll create a container based on this image.

Créez un conteneur.Create a container

Maintenant que vous disposez d’une image qui contient votre application, vous pouvez créer un conteneur.Now that you have an image that contains your app, you can create a container. Vous pouvez créer un conteneur de deux manières.You can create a container in two ways. Tout d’abord, créez un conteneur arrêté.First, create a new container that is stopped.

docker create --name core-counter counter-image
0f281cb3af994fba5d962cc7d482828484ea14ead6bfe386a35e5088c0058851

La docker create commande ci-dessus crée un conteneur basé sur l’image Counter-image .The docker create command from above will create a container based on the counter-image image. Le résultat de cette commande affiche la valeur CONTAINER ID (la vôtre sera différente) du conteneur créé.The output of that command shows you the CONTAINER ID (yours will be different) of the created container. Pour afficher une liste de tous les conteneurs, utilisez la commande docker ps -a :To see a list of all containers, use the docker ps -a command:

docker ps -a
CONTAINER ID    IMAGE            COMMAND                   CREATED           STATUS     PORTS    NAMES
0f281cb3af99    counter-image    "dotnet NetCore.Dock…"    40 seconds ago    Created             core-counter

Gérer le conteneurManage the container

Le conteneur a été créé avec un nom core-counterspécifique, ce nom est utilisé pour gérer le conteneur.The container was created with a specific name core-counter, this name is used to manage the container. L’exemple suivant utilise la commande docker start pour démarrer le conteneur, puis la commande docker ps pour afficher uniquement les conteneurs en cours d’exécution :The following example uses the docker start command to start the container, and then uses the docker ps command to only show containers that are running:

docker start core-counter
core-counter

docker ps
CONTAINER ID    IMAGE            COMMAND                   CREATED          STATUS          PORTS    NAMES
2f6424a7ddce    counter-image    "dotnet NetCore.Dock…"    2 minutes ago    Up 11 seconds            core-counter

De même, la commande docker stop arrêtera le conteneur.Similarly, the docker stop command will stop the container. L’exemple suivant utilise la docker stop commande pour arrêter le conteneur, puis utilise la docker ps commande pour indiquer qu’aucun conteneur n’est en cours d’exécution :The following example uses the docker stop command to stop the container, and then uses the docker ps command to show that no containers are running:

docker stop core-counter
core-counter

docker ps
CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

Se connecter à un conteneurConnect to a container

Lorsqu’un conteneur est en cours d’exécution, vous pouvez vous connecter à ce dernier pour afficher le résultat.After a container is running, you can connect to it to see the output. Utilisez les commandes docker start et docker attach pour démarrer le conteneur et observer le flux de sortie.Use the docker start and docker attach commands to start the container and peek at the output stream. Dans cet exemple, la combinaison de touches Ctrl + C est utilisée pour se détacher du conteneur en cours d’exécution.In this example, the Ctrl+C keystroke is used to detach from the running container. Cette séquence de touches met fin au processus dans le conteneur, sauf spécification contraire, qui arrête le conteneur.This keystroke will end the process in the container unless otherwise specified, which would stop the container. Le --sig-proxy=false paramètre garantit que Ctrl + C n’arrête pas le processus dans le conteneur.The --sig-proxy=false parameter ensures that Ctrl+C will not stop the process in the container.

Après vous être déconnecté du conteneur, reconnectez-vous pour vérifier qu’il est toujours en cours d’exécution et de comptage.After you detach from the container, reattach to verify that it's still running and counting.

docker start core-counter
core-counter

docker attach --sig-proxy=false core-counter
Counter: 7
Counter: 8
Counter: 9
^C

docker attach --sig-proxy=false core-counter
Counter: 17
Counter: 18
Counter: 19
^C

Supprimer un conteneurDelete a container

Dans le cadre de cet article, vous devez éviter de vous retrouver avec des conteneurs inactifs.For the purposes of this article you don't want containers just hanging around doing nothing. Supprimez le conteneur que vous avez créé précédemment.Delete the container you previously created. Si le conteneur est en cours d’exécution, arrêtez-le.If the container is running, stop it.

docker stop core-counter

L’exemple suivant répertorie tous les conteneurs.The following example lists all containers. Il utilise ensuite la commande docker rm pour supprimer le conteneur, puis recherche une deuxième fois si des conteneurs sont en cours d’exécution.It then uses the docker rm command to delete the container, and then checks a second time for any running containers.

docker ps -a
CONTAINER ID    IMAGE            COMMAND                   CREATED          STATUS                        PORTS    NAMES
2f6424a7ddce    counter-image    "dotnet NetCore.Dock…"    7 minutes ago    Exited (143) 20 seconds ago            core-counter

docker rm core-counter
core-counter

docker ps -a
CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

Exécution uniqueSingle run

Docker fournit la commande docker run pour créer et exécuter le conteneur comme une commande unique.Docker provides the docker run command to create and run the container as a single command. Cette commande vous évite de devoir exécuter docker create , puis docker start.This command eliminates the need to run docker create and then docker start. Vous pouvez également définir cette commande pour supprimer automatiquement le conteneur lorsque le conteneur s’arrête.You can also set this command to automatically delete the container when the container stops. Par exemple, utilisez docker run -it --rm pour effectuer deux opérations : utiliser automatiquement le terminal actuel pour se connecter au conteneur, puis supprimer ce conteneur une fois qu’il est terminé :For example, use docker run -it --rm to do two things, first, automatically use the current terminal to connect to the container, and then when the container finishes, remove it:

docker run -it --rm counter-image
Counter: 1
Counter: 2
Counter: 3
Counter: 4
Counter: 5
^C

Le conteneur transmet également des paramètres dans l’exécution de l’application .NET Core.The container also passes parameters into the execution of the .NET Core app. Pour ordonner à l’application .NET Core de compter uniquement jusqu’à 3 passe 3.To instruct the .NET Core app to count only to 3 pass in 3.

docker run -it --rm counter-image 3
Counter: 1
Counter: 2
Counter: 3

Avec docker run -it, la commande Ctrl + C arrête le processus en cours d’exécution dans le conteneur qui, à son tour, arrête le conteneur.With docker run -it, the Ctrl+C command will stop process that is running in the container, which in turn, stops the container. Comme le paramètre --rm a été fourni, le conteneur est automatiquement supprimé lorsque le processus est arrêté.Since the --rm parameter was provided, the container is automatically deleted when the process is stopped. Vérifiez qu’il n’existe pas :Verify that it doesn't exist:

docker ps -a
CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES

Modifier la commande ENTRYPOINTChange the ENTRYPOINT

La commande docker run vous permet également de modifier la commande ENTRYPOINT depuis le Dockerfile , puis d’exécuter un autre élément, mais uniquement pour ce conteneur.The docker run command also lets you modify the ENTRYPOINT command from the Dockerfile and run something else, but only for that container. Par exemple, utilisez la commande suivante pour exécuter bash ou cmd.exe.For example, use the following command to run bash or cmd.exe. Modifiez la commande selon vos besoins.Edit the command as necessary.

Dans cet exemple, ENTRYPOINT est remplacé par cmd.exe.In this example, ENTRYPOINT is changed to cmd.exe. Appuyez sur Ctrl + C pour terminer le processus et arrêter le conteneur.Ctrl+C is pressed to end the process and stop the container.

docker run -it --rm --entrypoint "cmd.exe" counter-image

Microsoft Windows [Version 10.0.17763.379]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\>dir
 Volume in drive C has no label.
 Volume Serial Number is 3005-1E84

 Directory of C:\

04/09/2019  08:46 AM    <DIR>          app
03/07/2019  10:25 AM             5,510 License.txt
04/02/2019  01:35 PM    <DIR>          Program Files
04/09/2019  01:06 PM    <DIR>          Users
04/02/2019  01:35 PM    <DIR>          Windows
               1 File(s)          5,510 bytes
               4 Dir(s)  21,246,517,248 bytes free

C:\>^C

Commandes essentiellesEssential commands

L’ancrage possède de nombreuses commandes différentes qui créent, gèrent et interagissent avec les conteneurs et les images.Docker has many different commands that create, manage, and interact with containers and images. Ces commandes Docker sont essentielles à la gestion de vos conteneurs :These Docker commands are essential to managing your containers:

Nettoyer les ressourcesClean up resources

Au cours de ce didacticiel, vous avez créé des conteneurs et des images.During this tutorial, you created containers and images. Si vous le souhaitez, supprimez ces ressources.If you want, delete these resources. Utilisez les commandes suivantes pourUse the following commands to

  1. Lister tous les conteneursList all containers

    docker ps -a
    
  2. Arrêtez les conteneurs qui s’exécutent par leur nom.Stop containers that are running by their name.

    docker stop counter-image
    
  3. Supprimer un conteneurDelete the container

    docker rm counter-image
    

Supprimez ensuite toutes les images que vous ne souhaitez plus conserver sur votre ordinateur.Next, delete any images that you no longer want on your machine. Supprimez l’image créée par votre Dockerfile, puis l’image .NET Core sur laquelle le Dockerfile était basé.Delete the image created by your Dockerfile and then delete the .NET Core image the Dockerfile was based on. Vous pouvez utiliser la valeur IMAGE ID ou la chaîne mise en forme REPOSITORY:TAG.You can use the IMAGE ID or the REPOSITORY:TAG formatted string.

docker rmi counter-image:latest
docker rmi mcr.microsoft.com/dotnet/core/aspnet:3.1

Utilisez la commande docker images pour afficher la liste des images installées.Use the docker images command to see a list of images installed.

Conseil

Les fichiers image peuvent être volumineux.Image files can be large. En règle générale, vous supprimez les conteneurs temporaires que vous avez créés lors des tests et du développement de votre app.Typically, you would remove temporary containers you created while testing and developing your app. Vous conservez normalement les images de base avec le runtime installé si vous envisagez de créer d’autres images basées sur ce runtime.You usually keep the base images with the runtime installed if you plan on building other images based on that runtime.

Étapes suivantesNext steps