Comment utiliser la commande docker container rm pour supprimer des conteneurs

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo, vous apprendrez à gérer efficacement les conteneurs Docker en utilisant la commande docker container rm. Vous pratiquerez la création et la suppression d'un conteneur de base, comprendrez comment forcer la suppression d'un conteneur en cours d'exécution, explorerez l'option de suppression d'un conteneur avec ses volumes anonymes associés, et enfin, vous apprendrez à supprimer efficacement tous les conteneurs arrêtés.

À travers des exercices pratiques, vous acquerrez une expérience concrète de la gestion essentielle du cycle de vie des conteneurs Docker, vous permettant de nettoyer votre environnement Docker et de gérer les ressources efficacement.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/SystemManagementGroup -.-> docker/prune("Remove Unused Docker Objects") subgraph Lab Skills docker/run -.-> lab-555120{{"Comment utiliser la commande docker container rm pour supprimer des conteneurs"}} docker/ls -.-> lab-555120{{"Comment utiliser la commande docker container rm pour supprimer des conteneurs"}} docker/ps -.-> lab-555120{{"Comment utiliser la commande docker container rm pour supprimer des conteneurs"}} docker/rm -.-> lab-555120{{"Comment utiliser la commande docker container rm pour supprimer des conteneurs"}} docker/pull -.-> lab-555120{{"Comment utiliser la commande docker container rm pour supprimer des conteneurs"}} docker/volume -.-> lab-555120{{"Comment utiliser la commande docker container rm pour supprimer des conteneurs"}} docker/prune -.-> lab-555120{{"Comment utiliser la commande docker container rm pour supprimer des conteneurs"}} end

Créer et supprimer un conteneur

Dans cette étape, vous apprendrez à créer et supprimer un conteneur Docker. Un conteneur est une instance exécutable d'une image. Vous pouvez créer, démarrer, arrêter, déplacer ou supprimer un conteneur en utilisant l'API Docker ou la CLI.

Commencez par télécharger une image simple que nous utiliserons pour créer un conteneur. Nous utiliserons l'image hello-world, une image très légère qui affiche simplement "Hello from Docker!" puis se termine.

docker pull hello-world

Vous devriez voir une sortie indiquant que l'image est en cours de téléchargement.

Using default tag: latest
latest: Pulling from library/hello-world
...
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Maintenant que nous avons l'image, nous pouvons créer et exécuter un conteneur à partir de celle-ci. Nous utiliserons la commande docker run.

docker run hello-world

Cette commande créera un nouveau conteneur à partir de l'image hello-world, exécutera la commande spécifiée dans l'image (qui consiste à afficher "Hello from Docker!"), puis le conteneur se terminera. Vous devriez voir le message "Hello from Docker!" dans votre terminal.

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Après l'exécution du conteneur, celui-ci s'arrête. Vous pouvez voir tous les conteneurs, y compris ceux arrêtés, en utilisant la commande docker ps -a.

docker ps -a

Vous devriez voir une sortie similaire à celle-ci, montrant le conteneur hello-world avec un statut "Exited".

CONTAINER ID   IMAGE         COMMAND    CREATED          STATUS                      PORTS     NAMES
<container_id>   hello-world   "/hello"   About a minute ago   Exited (0) About a minute ago             <container_name>

Maintenant, supprimons le conteneur arrêté. Nous pouvons utiliser la commande docker rm suivie de l'ID ou du nom du conteneur. Vous pouvez obtenir l'ID ou le nom du conteneur à partir de la sortie de docker ps -a. Remplacez <container_id> par l'ID réel de votre conteneur.

docker rm <container_id>

Vous devriez voir l'ID du conteneur s'afficher, indiquant que le conteneur a été supprimé.

<container_id>

Pour vérifier que le conteneur est bien supprimé, vous pouvez exécuter à nouveau docker ps -a. Le conteneur hello-world ne devrait plus apparaître dans la liste.

docker ps -a

La sortie ne devrait plus contenir le conteneur hello-world que vous venez de supprimer.

Forcer la suppression d'un conteneur en cours d'exécution

Dans l'étape précédente, nous avons supprimé un conteneur arrêté. Cependant, vous ne pouvez pas supprimer directement un conteneur en cours d'exécution avec docker rm. Dans cette étape, vous apprendrez comment forcer la suppression d'un conteneur en cours d'exécution.

D'abord, créons un conteneur qui restera actif. Nous utiliserons l'image ubuntu et exécuterons une commande qui maintient le conteneur en vie, comme sleep infinity. Si vous ne possédez pas l'image ubuntu, téléchargez-la d'abord.

docker pull ubuntu

Maintenant, exécutez un conteneur à partir de l'image ubuntu en mode détaché (-d) pour qu'il tourne en arrière-plan.

docker run -d ubuntu sleep infinity

Vous devriez voir une longue chaîne de caractères correspondant à l'ID du conteneur.

<container_id>

Vérifions maintenant que le conteneur est bien en cours d'exécution avec docker ps.

docker ps

Vous devriez voir le conteneur ubuntu listé avec un statut "Up".

CONTAINER ID   IMAGE    COMMAND         CREATED          STATUS          PORTS     NAMES
<container_id>   ubuntu   "sleep infinity"   About a minute ago   Up About a minute ago             <container_name>

Essayons maintenant de supprimer ce conteneur en cours d'exécution avec la commande docker rm et l'ID du conteneur. Remplacez <container_id> par l'ID réel de votre conteneur en cours d'exécution.

docker rm <container_id>

Vous devriez voir un message d'erreur indiquant qu'il est impossible de supprimer un conteneur en cours d'exécution.

Error response from daemon: You cannot remove a running container <container_id>. Stop the container before attempting removal or use -f

Comme le suggère le message d'erreur, vous devez d'abord arrêter le conteneur ou utiliser l'option -f (force). L'arrêt d'un conteneur peut prendre du temps, surtout si le processus à l'intérieur ne répond pas rapidement au signal d'arrêt. La suppression forcée est une méthode plus rapide pour supprimer un conteneur en cours d'exécution, bien qu'il soit généralement recommandé d'arrêter proprement les conteneurs lorsque c'est possible.

Forçons la suppression du conteneur en cours d'exécution avec l'option -f. Remplacez <container_id> par l'ID réel de votre conteneur en cours d'exécution.

docker rm -f <container_id>

Vous devriez voir l'ID du conteneur s'afficher, confirmant que le conteneur a été supprimé de force.

<container_id>

Pour vérifier que le conteneur a bien été supprimé, exécutez à nouveau docker ps. Le conteneur ubuntu ne devrait plus apparaître dans la liste.

docker ps

La sortie ne devrait plus contenir le conteneur ubuntu que vous venez de supprimer.

Supprimer un conteneur et ses volumes anonymes

Dans cette étape, vous apprendrez comment supprimer un conteneur et ses volumes anonymes associés. Lorsque vous créez un conteneur, Docker peut créer des volumes pour stocker des données. Les volumes anonymes sont des volumes qui ne sont pas explicitement nommés lors de leur création. Ils sont généralement créés lorsqu'une instruction VOLUME est présente dans le Dockerfile de l'image.

Exécutons un conteneur qui crée un volume anonyme. Nous utiliserons à nouveau l'image ubuntu et spécifierons un point de montage de volume avec l'option -v sans nom avant le deux-points.

docker run -d -v /data ubuntu sleep infinity

Cette commande crée un conteneur et un volume anonyme monté sur /data à l'intérieur du conteneur. Vous devriez voir l'ID du conteneur s'afficher.

<container_id>

Inspectons maintenant le conteneur pour voir le volume créé. Remplacez <container_id> par l'ID réel de votre conteneur en cours d'exécution.

docker inspect <container_id>

La sortie de docker inspect est un grand objet JSON. Cherchez la section "Mounts". Vous devriez voir une entrée pour le volume monté sur /data, et le champ "Name" contiendra une longue chaîne générée aléatoirement, indiquant qu'il s'agit d'un volume anonyme.

...
"Mounts": [
    {
        "Type": "volume",
        "Source": "<volume_name>",
        "Target": "/data",
        "Consistency": "consistent",
        "BindOptions": null,
        "Mode": "",
        "RW": true,
        "Propagation": "rprivate"
    }
],
...

Vous pouvez également lister tous les volumes avec docker volume ls. Vous devriez voir le volume anonyme listé.

docker volume ls

La sortie inclura le volume anonyme avec son nom généré aléatoirement.

DRIVER    VOLUME NAME
local     <volume_name>

Par défaut, lorsque vous supprimez un conteneur, ses volumes anonymes ne sont pas supprimés. Arrêtons d'abord le conteneur. Remplacez <container_id> par l'ID réel de votre conteneur en cours d'exécution.

docker stop <container_id>

Vous devriez voir l'ID du conteneur s'afficher.

<container_id>

Maintenant, supprimez le conteneur arrêté sans supprimer ses volumes. Remplacez <container_id> par l'ID réel de votre conteneur arrêté.

docker rm <container_id>

Vous devriez voir l'ID du conteneur s'afficher.

<container_id>

Vérifiez à nouveau les volumes avec docker volume ls. Le volume anonyme devrait toujours être présent.

docker volume ls

La sortie inclura toujours le volume anonyme.

Créons maintenant un autre conteneur avec un volume anonyme, puis supprimons le conteneur et son volume ensemble.

docker run -d -v /data ubuntu sleep infinity

Récupérez le nouvel ID de conteneur.

<new_container_id>

Arrêtez le nouveau conteneur. Remplacez <new_container_id> par l'ID réel.

docker stop <new_container_id>

Vous devriez voir l'ID du conteneur s'afficher.

<new_container_id>

Maintenant, supprimez le conteneur arrêté et ses volumes anonymes en utilisant l'option -v avec docker rm. Remplacez <new_container_id> par l'ID réel.

docker rm -v <new_container_id>

Vous devriez voir l'ID du conteneur s'afficher.

<new_container_id>

Vérifiez à nouveau les volumes avec docker volume ls. Le volume anonyme associé au conteneur que vous venez de supprimer devrait maintenant avoir disparu. Le premier volume anonyme que vous avez créé devrait toujours être présent.

docker volume ls

La sortie ne devrait afficher que le premier volume anonyme que vous avez créé.

Supprimer tous les conteneurs arrêtés

Dans cette étape, vous apprendrez comment supprimer tous les conteneurs arrêtés en une seule fois. Lorsque vous travaillez avec Docker, vous pouvez accumuler de nombreux conteneurs arrêtés qui occupent de l'espace disque. Docker fournit une commande pratique pour nettoyer ces conteneurs arrêtés.

Commençons par créer quelques conteneurs arrêtés. Nous pouvons utiliser l'image ubuntu et exécuter une commande qui se termine immédiatement.

docker run ubuntu echo "This container will stop immediately"

Vous devriez voir le message "This container will stop immediately" et le conteneur s'arrêtera.

Exécutez à nouveau la commande pour créer un autre conteneur arrêté.

docker run ubuntu echo "Another stopped container"

Vous devriez voir le message "Another stopped container" et ce conteneur s'arrêtera également.

Maintenant, listons tous les conteneurs, y compris ceux arrêtés, avec docker ps -a.

docker ps -a

Vous devriez voir les deux conteneurs que vous venez de créer listés avec un statut "Exited". Vous pourriez également voir d'autres conteneurs arrêtés des étapes précédentes si vous ne les avez pas supprimés.

CONTAINER ID   IMAGE    COMMAND                  CREATED          STATUS                      PORTS     NAMES
<container_id_1>   ubuntu   "echo 'This containe…"   About a minute ago   Exited (0) About a minute ago             <container_name_1>
<container_id_2>   ubuntu   "echo 'Another stopp…"   About a minute ago   Exited (0) About a minute ago             <container_name_2>
...

Pour supprimer tous les conteneurs arrêtés, vous pouvez utiliser la commande docker container prune. Cette commande supprimera tous les conteneurs arrêtés.

docker container prune

Docker demandera une confirmation avant de supprimer les conteneurs. Tapez y et appuyez sur Entrée.

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

Vous devriez voir une liste des IDs des conteneurs supprimés.

Deleted Containers:
<container_id_1>
<container_id_2>
...

Total reclaimed space: ...

Pour vérifier que tous les conteneurs arrêtés ont été supprimés, exécutez à nouveau docker ps -a.

docker ps -a

La sortie ne devrait afficher que les conteneurs en cours d'exécution (s'il y en a) et aucun conteneur arrêté.

Résumé

Dans ce lab, vous avez appris le processus fondamental de gestion des conteneurs Docker à l'aide de la commande docker rm. Vous avez commencé par créer et exécuter un simple conteneur hello-world, en observant son cycle de vie de la création à l'arrêt. Vous avez ensuite pratiqué la suppression de ce conteneur arrêté en utilisant son ID ou son nom.

En approfondissant, vous avez exploré des scénarios de suppression plus avancés. Vous avez appris comment supprimer de force un conteneur en cours d'exécution avec l'option -f, en comprenant les implications de cette action. De plus, vous avez découvert comment supprimer un conteneur ainsi que ses volumes anonymes associés à l'aide de l'option -v, garantissant ainsi une suppression propre. Enfin, vous avez maîtrisé la technique efficace pour supprimer simultanément tous les conteneurs arrêtés, une commande utile pour nettoyer votre environnement Docker.