Comment supprimer des images, des conteneurs et des volumes Docker

Introduction

Docker facilite l’emballage de vos applications et services dans des conteneurs afin que vous puissiez les exécuter n’importe où. Cependant, en travaillant avec Docker, il est également facile d’accumuler un nombre excessif d’images, de conteneurs et de volumes de données inutilisés qui encombrent la sortie et consomment de l’espace disque.

Docker vous fournit tous les outils nécessaires pour nettoyer votre système depuis la ligne de commande. Ce guide de style feuille de triche fournit une référence rapide aux commandes utiles pour libérer de l’espace disque et maintenir votre système organisé en supprimant les images, conteneurs et volumes Docker inutilisés.

Comment Utiliser ce Guide :

  • Ce guide est au format feuille de triche avec des extraits de ligne de commande autonomes.
  • Accédez à la section pertinente pour la tâche que vous essayez d’accomplir.

Note : La syntaxe de substitution de commande, commande $(commande), utilisée dans les commandes est disponible dans de nombreux shells populaires, tels que bash, zsh, et Windows Powershell.Si vous souhaitez un moyen en un clic de déployer une application Docker sur un serveur en direct, jetez un œil à la plateforme d’application DigitalOcean.

Si vous souhaitez une manière en un clic de déployer une application Docker sur un serveur en direct, jetez un œil à DigitalOcean App Platform.

Purger toutes les images inutilisées ou flottantes, les conteneurs, les volumes et les réseaux

Docker fournit un seul commande qui nettoiera tous les ressources — images, conteneurs, volumes et réseaux — qui sont flottantes (non tagué ou associé à un conteneur) :

docker system prune

Pour en plus supprimer tout conteneurs arrêté et tout images inutilisées (pas seulement images flottantes), ajoutez le drapeau -a à la commande :

docker system prune -a

Supprimer les images Docker

Supprimer une ou plusieurs images spécifiques

Utilisez la commande docker images avec le drapeau -a pour localiser l’ID des images que vous souhaitez supprimer. Cela vous montrera chaque image, y compris les couches d’images intermédiaires. Une fois que vous avez localisé les images que vous souhaitez supprimer, vous pouvez passer leur ID ou leur tag à docker rmi:

Liste:

docker images -a

Supprimer:

docker rmi Image Image

Remarque: Le drapeau -a ou --all dans la commande docker images affiche toutes les images Docker, y compris les couches intermédiaires qui ne sont référencées par aucun tag. Par défaut, docker images n’affiche que les images ayant au moins un tag. Cependant, il peut y avoir des images sans aucun tag qui occupent encore l’espace disque sur le système. Le drapeau -a peut être utile pour identifier les images qui peuvent être nettoyées pour économiser l’espace disque. Lorsqu’il est utilisé avec la commande docker rmi, le drapeau -f ou --force peut également être utilisé pour supprimer des images sans tag.

Supprimer les images Docker flottantes

Les images Docker se composent de plusieurs couches. Les images flottantes sont des couches qui n’ont aucun lien avec des images étiquetées. Elles ne servent plus à rien et consomment l’espace disque. Elles peuvent être localisées en ajoutant le drapeau de filtre -f avec une valeur de dangling=true à la commande docker images. Lorsque vous êtes sûr de vouloir les supprimer, vous pouvez utiliser la commande docker image prune :

Note: Si vous construisez une image sans la baliser, l’image apparaîtra dans la liste des images en suspens car elle n’est pas associée à une image balisée. Vous pouvez éviter cette situation en fournissant une balise lors de la construction, et vous pouvez baliser rétroactivement une image avec la commande docker tag.

Liste :

docker images -f dangling=true

Supprimer :

docker image prune

Supprimer des images selon un motif

Vous pouvez trouver toutes les images correspondant à un motif en utilisant une combinaison de docker images et de grep. Une fois satisfait, vous pouvez les supprimer en utilisant awk pour passer les identifiants à docker rmi. Notez que ces utilitaires ne sont pas fournis par Docker et ne sont pas nécessairement disponibles sur tous les systèmes :

Liste :

docker images -a |  grep "pattern"

Supprimer :

docker images -a | grep "pattern" | awk '{print $1":"$2}' | xargs docker rmi

Supprimer toutes les images

Toutes les images Docker sur un système peuvent être répertoriées en ajoutant -a à la commande docker images. Une fois sûr de vouloir les supprimer toutes, vous pouvez ajouter le drapeau -q pour transmettre l’ID de l’image à docker rmi:

Liste:

docker images -a

Supprimer:

docker rmi $(docker images -a -q)

Suppression des conteneurs

Supprimer un ou plusieurs conteneurs spécifiques

Utilisez la commande docker ps avec le drapeau -a pour localiser le nom ou l’ID des conteneurs que vous souhaitez supprimer:

Liste:

docker ps -a

Supprimer:

docker rm ID_or_Name ID_or_Name

Supprimer un conteneur à la sortie

Si vous savez que vous ne voulez pas conserver un conteneur une fois que vous avez terminé, vous pouvez exécuter docker run --rm pour le supprimer automatiquement lorsqu’il se termine :

Exécuter et Supprimer :

docker run --rm image_name

Supprimer tous les conteneurs arrêtés

Vous pouvez localiser les conteneurs en utilisant docker ps -a et les filtrer par leur statut : created, restarting, running, paused, ou exited. Pour passer en revue la liste des conteneurs exited, utilisez le drapeau -f pour filtrer en fonction du statut. Lorsque vous avez vérifié que vous voulez supprimer ces conteneurs, utilisez -q pour passer les identifiants à la commande docker rm :

Liste :

docker ps -a -f status=exited

Supprimer :

docker rm $(docker ps -a -f status=exited -q)

Supprimer les conteneurs en utilisant plus d’un filtre

Les filtres Docker peuvent être combinés en répétant le drapeau de filtre avec une valeur supplémentaire. Cela donne une liste de conteneurs répondant à l’une ou l’autre condition. Par exemple, si vous voulez supprimer tous les conteneurs marqués soit comme créé (un état qui peut survenir lorsque vous exécutez un conteneur avec une commande invalide) ou exited, vous pouvez utiliser deux filtres :

Liste :

docker ps -a -f status=exited -f status=created

Supprimer :

docker rm $(docker ps -a -f status=exited -f status=created -q)

Supprimer les conteneurs selon un motif

Vous pouvez trouver tous les conteneurs correspondant à un motif en utilisant une combinaison de docker ps et grep. Lorsque vous êtes satisfait de la liste que vous souhaitez supprimer, vous pouvez utiliser awk et xargs pour fournir l’ID à docker rm. Notez que ces utilitaires ne sont pas fournis par Docker et ne sont pas nécessairement disponibles sur tous les systèmes :

Liste :

docker ps -a |  grep "pattern

Supprimer :

docker ps -a | grep "pattern" | awk '{print $1}' | xargs docker rm

Arrêtez et supprimez tous les conteneurs

Vous pouvez consulter les conteneurs sur votre système avec la commande docker ps. Ajouter le drapeau -a affichera tous les conteneurs. Lorsque vous êtes sûr de vouloir les supprimer, vous pouvez ajouter le drapeau -q pour fournir les identifiants aux commandes docker stop et docker rm:

Liste :

docker ps -a

Suppression :

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

Suppression des volumes

Supprimez un ou plusieurs volumes spécifiques

Utilisez la commande docker volume ls pour localiser le nom ou les noms des volumes que vous souhaitez supprimer. Ensuite, vous pouvez supprimer un ou plusieurs volumes avec la commande docker volume rm:

Liste :

docker volume ls

Suppression :

docker volume rm volume_name volume_name

Supprimer les volumes en suspens

Étant donné que le but des volumes est d’exister indépendamment des conteneurs, lorsqu’un conteneur est supprimé, un volume n’est pas automatiquement supprimé en même temps. Lorsqu’un volume existe et n’est plus connecté à aucun conteneur, on l’appelle un volume en suspens. Pour les localiser et confirmer que vous souhaitez les supprimer, vous pouvez utiliser la commande docker volume ls avec un filtre pour limiter les résultats aux volumes en suspens. Lorsque vous êtes satisfait de la liste, vous pouvez tous les supprimer avec docker volume prune:

Liste :

docker volume ls -f dangling=true

Supprimer :

docker volume prune

Supprimer un conteneur et son volume

Si vous créez un volume non nommé, il peut être supprimé en même temps que le conteneur avec le drapeau -v. Notez que cela ne fonctionne qu’avec les volumes non nommés. Lorsque le conteneur est supprimé avec succès, son ID est affiché. Notez qu’aucune référence n’est faite à la suppression du volume. S’il n’est pas nommé, il est silencieusement supprimé du système. S’il est nommé, il reste silencieusement présent.

Supprimer :

docker rm -v container_name

Conclusion

Ce guide couvre certaines des commandes courantes utilisées pour supprimer des images, des conteneurs et des volumes avec Docker. Il existe de nombreuses autres combinaisons et indicateurs qui peuvent être utilisés avec chacune d’elles. Pour un guide complet sur ce qui est disponible, consultez la documentation Docker pour docker system prune, docker rmi, docker rm et docker volume rm. S’il y a des tâches de nettoyage courantes que vous aimeriez voir dans le guide, veuillez demander ou faire des suggestions dans les commentaires.

Pour un examen détaillé des différents composants d’un conteneur Docker, consultez L’écosystème Docker : Une introduction aux composants courants.

Source:
https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes