Comment supprimer des images, des conteneurs et des volumes Docker

Une feuille de triche Docker

introduction

Docker simplifie l'enveloppement de vos applications et services dans des conteneurs afin de pouvoir les exécuter n'importe où. Toutefois, lorsque vous travaillez 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 dont vous avez besoin pour nettoyer votre système à partir de la ligne de commande. Ce guide de style aide-mémoire fournit une référence rapide aux commandes utiles pour libérer de l'espace disque et garder votre système organisé en supprimant les images, les conteneurs et les volumes Docker inutilisés.

Comment utiliser ce guide:

  • Ce guide est au format aide-mémoire avec des extraits de ligne de commande autonomes.

  • Accédez à toute section pertinente à la tâche que vous tentez de terminer.

La syntaxe de substitution de commande,command $(command), utilisée dans les commandes est disponible dans de nombreux shells populaires tels que bash, zsh et Windows Powershell.

Purge de toutes les images, conteneurs, volumes et réseaux inutilisés ou en suspension

Docker fournit une commande unique qui nettoiera toutes les ressources - images, conteneurs, volumes et réseaux - qui sont suspendues (non associées à un conteneur):

docker system prune

Pour supprimer en outre tous les conteneurs arrêtés et toutes les images inutilisées (pas seulement les images pendantes), ajoutez l'indicateur-a à la commande:

docker system prune -a

Suppression des images Docker

Supprimer une ou plusieurs images spécifiques

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

Liste:

docker images -a

Retirer:

docker rmi Image Image

Supprimer les images pendantes

Les images Docker se composent de plusieurs couches. Les images pendantes sont des calques sans relation avec les images marquées. Ils ne servent plus à rien et consomment de l'espace disque. Ils peuvent être localisés en ajoutant l'indicateur de filtre,-f avec une valeur dedangling=true à la commandedocker images. Lorsque vous êtes sûr de vouloir les supprimer, vous pouvez utiliser la commandedocker images purge:

Note: If you build an image without tagging it, the image will appear on the list of dangling images because it has no association with a tagged image. You can avoid this situation by https://docs.docker.com/engine/reference/commandline/build//tag-image—​t[providing a tag] when you build, and you can retroactively tag an images with the docker tag command.
#

Liste:

docker images -f dangling=true

Retirer:

docker images purge

Suppression d'images selon un motif

Vous pouvez trouver toutes les images qui correspondent à un motif en utilisant une combinaison dedocker images etgrep. Une fois que vous êtes satisfait, vous pouvez les supprimer en utilisantawk pour transmettre 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"

Retirer:

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

Supprimer toutes les images

Toutes les images Docker d'un système peuvent être répertoriées en ajoutant-a à la commandedocker images. Une fois que vous êtes sûr de vouloir tous les supprimer, vous pouvez ajouter l'indicateur-q pour transmettre l'ID d'image àdocker rmi:

Liste:

docker images -a

Retirer:

docker rmi $(docker images -a -q)

Retrait des conteneurs

Supprimer un ou plusieurs conteneurs spécifiques

Utilisez la commandedocker ps avec l'indicateur-a pour localiser le nom ou l'ID des conteneurs que vous souhaitez supprimer:

Liste:

docker ps -a

Retirer:

docker rm ID_or_Name ID_or_Name

Retirer un conteneur à la sortie

Si vous savez, lorsque vous créez un conteneur, que vous ne souhaitez pas le conserver une fois que vous avez terminé, vous pouvez exécuterdocker run --rm pour le supprimer automatiquement à sa sortie.

Exécuter et supprimer:

docker run --rm image_name

Supprimer tous les conteneurs sortis

Vous pouvez localiser les conteneurs à l'aide dedocker ps -a et les filtrer en fonction de leur état: créé, redémarré, en cours d'exécution, en pause ou quitté. Pour consulter la liste des conteneurs sortis, utilisez l'indicateur-f pour filtrer en fonction de l'état. Une fois que vous avez vérifié que vous souhaitez supprimer ces conteneurs, utilisez-q pour transmettre les ID à la commandedocker rm.

Liste:

docker ps -a -f status=exited

Retirer:

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 l'indicateur de filtre avec une valeur supplémentaire. Il en résulte une liste de conteneurs qui remplissent l'une ou l'autre condition. Par exemple, si vous souhaitez supprimer tous les conteneurs marqués commeCreated (un état qui peut résulter lorsque vous exécutez un conteneur avec une commande non valide) ouExited, vous pouvez utiliser deux filtres:

Liste:

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

Retirer:

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

Retirer les contenants selon un motif

Vous pouvez trouver tous les conteneurs qui correspondent à un modèle en utilisant une combinaison dedocker ps etgrep. Lorsque vous êtes satisfait de la liste que vous souhaitez supprimer, vous pouvez utiliserawk etxargs pour fournir l'ID à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 ps -a |  grep "pattern”

Retirer:

docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

Arrêtez et retirez tous les conteneurs

Vous pouvez consulter les conteneurs de votre système avecdocker ps. L'ajout de l'indicateur-a affichera tous les conteneurs. Lorsque vous êtes sûr de vouloir les supprimer, vous pouvez ajouter l'indicateur-q pour fournir les ID aux commandesdocker stop etdocker rm:

Liste:

docker ps -a

Retirer:

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

Supprimer des volumes

Supprimer un ou plusieurs volumes spécifiques - Docker 1.9 et versions ultérieures

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

Liste:

docker volume ls

Retirer:

docker volume rm volume_name volume_name

Supprimer les volumes suspendus - Docker 1.9 et versions ultérieures

Étant donné que le point des volumes doit exister indépendamment des conteneurs, lorsqu'un volume est supprimé, un volume n'est pas automatiquement supprimé en même temps. Lorsqu'un volume existe et qu'il n'est plus connecté à aucun conteneur, il est appelé volume suspendu. Pour les localiser et confirmer que vous souhaitez les supprimer, vous pouvez utiliser la commandedocker volume ls avec un filtre pour limiter les résultats aux volumes suspendus. Lorsque vous êtes satisfait de la liste, vous pouvez tous les supprimer avecdocker volume prune:

Liste:

docker volume ls -f dangling=true

Retirer:

docker volume prune

Supprimer un conteneur et son volume

Si vous avez créé un volume sans nom, il peut être supprimé en même temps que le conteneur avec l'indicateur-v. Notez que cela ne fonctionne qu'avec les volumesunnamed. 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 supprimé du système de manière silencieuse. S'il est nommé, il reste présent en silence.

Retirer:

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 pouvant être utilisés avec chacun. Pour un guide complet de ce qui est disponible, consultez la documentation Docker pourdocker system prune,docker rmi,docker rm etdocker volume rm. Si vous souhaitez voir des tâches de nettoyage courantes dans le guide, veuillez demander ou faire des suggestions dans les commentaires.