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.