Comment utiliser la commande docker container prune pour supprimer les conteneurs arrêtés

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 lab, vous apprendrez à gérer efficacement votre environnement Docker en supprimant les conteneurs arrêtés à l'aide de la commande docker container prune. Nous commencerons par créer et arrêter plusieurs conteneurs pour simuler un scénario réel. Ensuite, vous explorerez différentes méthodes pour nettoyer ces conteneurs arrêtés, notamment en supprimant tous les conteneurs, en supprimant ceux créés avant une heure spécifique, et en supprimant sélectivement les conteneurs en fonction de leurs labels (étiquettes). Cette expérience pratique vous permettra d'acquérir les compétences nécessaires pour maintenir votre système Docker propre et optimisé.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/prune("Remove Unused Docker Objects") subgraph Lab Skills docker/run -.-> lab-555117{{"Comment utiliser la commande docker container prune pour supprimer les conteneurs arrêtés"}} docker/ps -.-> lab-555117{{"Comment utiliser la commande docker container prune pour supprimer les conteneurs arrêtés"}} docker/stop -.-> lab-555117{{"Comment utiliser la commande docker container prune pour supprimer les conteneurs arrêtés"}} docker/rm -.-> lab-555117{{"Comment utiliser la commande docker container prune pour supprimer les conteneurs arrêtés"}} docker/pull -.-> lab-555117{{"Comment utiliser la commande docker container prune pour supprimer les conteneurs arrêtés"}} docker/prune -.-> lab-555117{{"Comment utiliser la commande docker container prune pour supprimer les conteneurs arrêtés"}} end

Créer et arrêter des conteneurs

Dans cette étape, nous allons apprendre à créer et arrêter des conteneurs Docker. Les conteneurs Docker sont des unités légères, portables et autonomes contenant tout le nécessaire pour exécuter une application.

Commencez par télécharger une image Docker que nous utiliserons pour créer des conteneurs. Nous utiliserons l'image ubuntu, qui est un système d'exploitation Ubuntu minimal.

docker pull ubuntu

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

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

Maintenant que nous avons l'image, créons et exécutons un conteneur à partir de celle-ci. Nous utiliserons la commande docker run. Le flag -d exécute le conteneur en mode détaché (en arrière-plan), et le flag --name attribue un nom au conteneur.

docker run -d --name my-ubuntu-container ubuntu sleep infinity

Cette commande crée un conteneur nommé my-ubuntu-container à partir de l'image ubuntu et exécute la commande sleep infinity à l'intérieur. La commande sleep infinity maintient le conteneur en fonctionnement indéfiniment.

Vous devriez voir une longue chaîne de caractères en sortie, qui correspond à l'ID du conteneur.

<container_id>

Pour vérifier que le conteneur est en cours d'exécution, nous pouvons utiliser la commande docker ps.

docker ps

Cette commande liste tous les conteneurs en cours d'exécution. Vous devriez voir votre my-ubuntu-container dans la liste.

CONTAINER ID   IMAGE          COMMAND            CREATED         STATUS         PORTS     NAMES
<container_id>   ubuntu         "sleep infinity"   X seconds ago   Up X seconds             my-ubuntu-container

Maintenant, créons un autre conteneur, mais cette fois sans lui donner de nom spécifique. Docker générera automatiquement un nom.

docker run -d ubuntu sleep infinity

À nouveau, vous verrez l'ID du conteneur en sortie.

<container_id>

Exécutez docker ps à nouveau pour voir les deux conteneurs en cours d'exécution.

docker ps

Vous devriez maintenant voir deux conteneurs listés.

CONTAINER ID   IMAGE          COMMAND            CREATED         STATUS         PORTS     NAMES
<container_id>   ubuntu         "sleep infinity"   X seconds ago   Up X seconds             my-ubuntu-container
<container_id>   ubuntu         "sleep infinity"   X seconds ago   Up X seconds             <random_name>

Maintenant, arrêtons le conteneur nommé my-ubuntu-container. Nous pouvons utiliser la commande docker stop suivie du nom ou de l'ID du conteneur.

docker stop my-ubuntu-container

Vous devriez voir le nom du conteneur en sortie, indiquant qu'il a été arrêté.

my-ubuntu-container

Exécutez docker ps à nouveau. Vous verrez que my-ubuntu-container n'apparaît plus, car docker ps n'affiche que les conteneurs en cours d'exécution.

docker ps

Pour voir tous les conteneurs, y compris ceux arrêtés, utilisez la commande docker ps -a.

docker ps -a

Vous devriez maintenant voir les deux conteneurs, avec my-ubuntu-container ayant un statut Exited.

CONTAINER ID   IMAGE          COMMAND            CREATED         STATUS                      PORTS     NAMES
<container_id>   ubuntu         "sleep infinity"   X minutes ago   Exited (0) X seconds ago              my-ubuntu-container
<container_id>   ubuntu         "sleep infinity"   X minutes ago   Up X minutes                          <random_name>

Enfin, arrêtons le deuxième conteneur en utilisant son ID. Vous pouvez obtenir l'ID à partir de la sortie de docker ps -a. Remplacez <container_id> par l'ID réel du deuxième conteneur.

docker stop <container_id>

Vous devriez voir l'ID du conteneur en sortie.

<container_id>

Exécutez docker ps -a une dernière fois pour confirmer que les deux conteneurs sont arrêtés.

docker ps -a

Les deux conteneurs devraient maintenant avoir un statut Exited.

CONTAINER ID   IMAGE          COMMAND            CREATED         STATUS                      PORTS     NAMES
<container_id>   ubuntu         "sleep infinity"   X minutes ago   Exited (0) X seconds ago              my-ubuntu-container
<container_id>   ubuntu         "sleep infinity"   X minutes ago   Exited (0) X seconds ago              <random_name>

Supprimer tous les conteneurs arrêtés

Dans l'étape précédente, nous avons créé et arrêté deux conteneurs. Les conteneurs arrêtés continuent de consommer de l'espace disque et des ressources. Dans cette étape, nous allons apprendre à supprimer tous les conteneurs arrêtés en utilisant la commande docker container prune.

Commencez par lister tous les conteneurs, y compris ceux arrêtés, pour visualiser les conteneurs que nous allons supprimer.

docker ps -a

Vous devriez voir les deux conteneurs que nous avons arrêtés précédemment.

CONTAINER ID   IMAGE          COMMAND            CREATED         STATUS                      PORTS     NAMES
<container_id>   ubuntu         "sleep infinity"   X minutes ago   Exited (0) X minutes ago              my-ubuntu-container
<container_id>   ubuntu         "sleep infinity"   X minutes ago   Exited (0) X minutes ago              <random_name>

Maintenant, supprimons tous les conteneurs arrêtés. La commande docker container prune permet de supprimer 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 pour continuer.

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

Vous devriez voir une sortie indiquant les conteneurs supprimés et l'espace total récupéré.

Deleted Containers:
<container_id>
<container_id>

Total reclaimed space: XMB

Pour vérifier que les conteneurs arrêtés ont bien été supprimés, listez à nouveau tous les conteneurs.

docker ps -a

Cette fois, vous ne devriez voir aucune sortie, ce qui indique qu'il ne reste plus aucun conteneur (en cours d'exécution ou arrêté).

CONTAINER ID   IMAGE          COMMAND            CREATED         STATUS         PORTS     NAMES

Supprimer les conteneurs arrêtés créés avant une heure spécifique

Dans l'étape précédente, nous avons appris à supprimer tous les conteneurs arrêtés. Parfois, vous pourriez vouloir ne supprimer que les conteneurs arrêtés créés avant un certain moment. Cela peut être utile pour nettoyer les anciens conteneurs tout en conservant les plus récents. Dans cette étape, nous allons apprendre à supprimer les conteneurs arrêtés créés avant une heure spécifique en utilisant le flag --filter avec le filtre until.

Commencez par créer quelques conteneurs et arrêtez-les pour avoir des éléments à nettoyer.

docker run -d --name container-old-1 ubuntu sleep infinity
docker run -d --name container-old-2 ubuntu sleep infinity

Attendez quelques secondes, puis créez un autre conteneur. Ce sera notre conteneur "récent".

sleep 5
docker run -d --name container-new-1 ubuntu sleep infinity

Maintenant, arrêtez tous les conteneurs.

docker stop container-old-1 container-old-2 container-new-1

Listez tous les conteneurs pour voir leur statut et leur heure de création.

docker ps -a --format "{{.Names}}\t{{.Status}}\t{{.CreatedAt}}"

Vous devriez voir une sortie similaire à celle-ci, avec des heures de création différentes :

container-old-1	Exited (0) X seconds ago	YYYY-MM-DD HH:MM:SS +0000 UTC
container-old-2	Exited (0) X seconds ago	YYYY-MM-DD HH:MM:SS +0000 UTC
container-new-1	Exited (0) X seconds ago	YYYY-MM-DD HH:MM:SS +0000 UTC

Maintenant, supprimons les conteneurs arrêtés créés avant une heure spécifique. Nous utiliserons le filtre until avec la commande docker container prune. Le filtre until accepte un timestamp ou une durée. Pour cet exemple, nous utiliserons une durée, en spécifiant que nous voulons supprimer les conteneurs créés il y a plus de 10 secondes.

docker container prune --filter "until=10s"

Docker demandera une confirmation. 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 sortie indiquant que les anciens conteneurs ont été supprimés. Le conteneur récent ne devrait pas figurer dans la liste des éléments supprimés.

Deleted Containers:
<container_id_old_1>
<container_id_old_2>

Total reclaimed space: XMB

Pour vérifier que seuls les anciens conteneurs ont été supprimés, listez à nouveau tous les conteneurs.

docker ps -a --format "{{.Names}}\t{{.Status}}"

Vous ne devriez voir que le conteneur container-new-1 listé avec un statut Exited.

container-new-1	Exited (0) X seconds ago

Supprimer les conteneurs arrêtés avec un label spécifique

Dans les étapes précédentes, nous avons appris à supprimer tous les conteneurs arrêtés et les conteneurs arrêtés en fonction de leur date de création. Dans cette étape, nous allons explorer une autre méthode utile pour filtrer les conteneurs à supprimer : l'utilisation des labels. Les labels sont des paires clé-valeur que vous pouvez associer aux objets Docker, y compris les conteneurs, pour les organiser et les gérer.

Commencez par créer quelques conteneurs avec différents labels.

docker run -d --name container-label-app --label app=frontend ubuntu sleep infinity
docker run -d --name container-label-env --label env=development ubuntu sleep infinity
docker run -d --name container-no-label ubuntu sleep infinity

Maintenant, arrêtez tous les conteneurs.

docker stop container-label-app container-label-env container-no-label

Listez tous les conteneurs et leurs labels pour voir les labels que nous avons appliqués.

docker ps -a --format "{{.Names}}\t{{.Labels}}"

Vous devriez voir une sortie similaire à celle-ci :

container-label-app	app=frontend
container-label-env	env=development
container-no-label

Maintenant, supprimons uniquement les conteneurs arrêtés ayant le label app=frontend. Nous utiliserons le flag --filter avec le filtre label.

docker container prune --filter "label=app=frontend"

Docker demandera une confirmation. 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 sortie indiquant que le conteneur avec le label app=frontend a été supprimé.

Deleted Containers:
<container_id_app_frontend>

Total reclaimed space: XMB

Pour vérifier que seul le conteneur avec le label app=frontend a été supprimé, listez à nouveau tous les conteneurs.

docker ps -a --format "{{.Names}}\t{{.Labels}}"

Vous devriez maintenant voir uniquement les conteneurs avec le label env=development et sans label.

container-label-env	env=development
container-no-label

Vous pouvez également supprimer les conteneurs qui n'ont pas un label spécifique en utilisant le préfixe ! avec le filtre de label. Supprimons le conteneur qui n'a pas le label env=development.

docker container prune --filter "label!=env=development"

Confirmez la suppression en tapant y et en appuyant sur Entrée.

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

Vous devriez voir une sortie indiquant que le conteneur sans le label env=development a été supprimé.

Deleted Containers:
<container_id_no_label>

Total reclaimed space: XMB

Listez tous les conteneurs une dernière fois pour confirmer que seul le conteneur avec le label env=development reste.

docker ps -a --format "{{.Names}}\t{{.Labels}}"

Vous ne devriez voir que le conteneur container-label-env listé.

container-label-env	env=development

Résumé

Dans ce labo, nous avons appris à créer et arrêter des conteneurs Docker en utilisant les commandes docker run et docker stop, ainsi qu'à lister les conteneurs en cours d'exécution avec docker ps. Nous avons ensuite exploré la commande docker container prune pour supprimer efficacement les conteneurs arrêtés. Plus précisément, nous avons pratiqué :

  1. La suppression de tous les conteneurs arrêtés
  2. L'élimination des conteneurs arrêtés créés avant une heure spécifique en utilisant l'option --filter until
  3. La suppression sélective des conteneurs arrêtés en fonction de leurs labels avec l'option --filter label

Ces étapes ont démontré des méthodes pratiques pour gérer et nettoyer les conteneurs arrêtés dans un environnement Docker.