cours
Docker Prune : Un guide complet avec des exemples pratiques
Si vous travaillez quotidiennement avec Docker, vous savez à quelle vitesse il peut consommer de l'espace disque.
Au fil du temps, votre système accumule des images, des conteneurs, des volumes et des réseaux inutilisés. La plupart du temps, ils restent inutilisés, occupent un espace de stockage précieux et vous empêchent de travailler sur votre projet en cours. Heureusement, Docker propose descommandes de nettoyage intégréessur qui permettent de supprimer facilement les ressources inutiles.
Ces commandes de nettoyage font partie de la famille docker prune
, et aujourd'hui, vous allez tout apprendre à leur sujet. Ils deviendront rapidement votre solution de référence pour libérer de l'espace disque.
Commençons par une brève présentation avant de nous plonger dans des exemples pratiques.
Vous êtes novice en matière de Docker ? Consultez notre guide sur l'apprentissage de Docker à partir de zéro pour les professionnels des données afin d'être rapidement opérationnel.
Qu'est-ce que Docker Prune ?
Le terme "Docker Prune" fait généralement référence à un ensemble de commandes conçues pour vous aider à supprimer les ressources Docker inutilisées et inutiles.
Au fil du temps, surtout si vous travaillez sur plusieurs projets, vous créerez d'innombrables images, exécuterez des conteneurs et configurerez des volumes et des réseaux. Toutes ces données s'accumulent sur votre système et occupent une grande partie de l'espace disque. L'objectif de docker prune
est d'éliminer ce désordre et de récupérer de l'espace de stockage.
Cela dit, le site docker prune
ne se résume pas à ce qu'il paraît.
Il ne s'agit pas d'une simple commande que vous pouvez exécuter. C'est possible, mais vous avez parfois besoin de un contrôle granulaire sur ce qui est supprimé. C'est là qu'intervient cet article. Il vous montrera comment gérer efficacement l'élagage, en vous assurant que vous ne supprimez que ce que vous avez l'intention de supprimer, et comment pratiquer dans un environnement sûr pour éviter de supprimer accidentellement des données importantes.
Il convient également de noter que les commandes prune ne suppriment que les ressources qui ne sont pas activement utilisées. Les images, les volumes et les réseaux référencés par les conteneurs en cours d'exécution ne seront pas supprimés. En d'autres termes, l'élagage n'interfère pas avec les charges de travail actives.
Dans la section suivante, nous vous présenterons les différents types de commandes d'élagage et vous expliquerons comment elles s'intègrent dans votre flux de travail.
Vous souhaitez ajouter Docker à votre CV ou à votre portfolioio ? Ces 10 idées de projets Docker vous permettront d'être prêt à travailler.
Toutes les commandes Docker Prune avec des exemples pratiques
Docker propose plusieurs commandes prune
qui vous permettent de nettoyer les ressources inutilisées individuellement ou en une seule fois. Dans cette section, vous apprendrez à les connaître, à la fois par le biais de lathéorie et d' exemples pratiques.
docker system prune
Il s'agit de la commande la plus complète pour récupérer de l'espace disque. Il supprime tous les conteneurs, réseaux, images et cache de construction inutilisés en une seule opération.
Si vous cherchez un moyen rapide de libérer de l'espace disque à l'aide d'une seule commande, c'est celui qu'il vous faut.
Vous pouvez passer des options à la commande docker system prune
:
-a
ou--all
supprime toutes les images inutilisées au lieu des seules images pendantes (images qui ne sont pas marquées ou référencées par un conteneur).--filter
vous permet de spécifier des valeurs de filtrage.-f
ou--force
, la demande de confirmation est ignorée.--volumes
élimine également les volumes anonymes ainsi que les conteneurs, les réseaux, les images et le cache de construction.
Par défaut, docker system prune
vous demande une confirmation, car il s'agit d'une opération potentiellement destructrice potentiellement destructrice :
Image 1 - Invite de confirmation de l'élagage du système Docker
Pour contourner l'invite et supprimer toutes les images, conteneurs, réseaux et volumes inutilisés à l'aide d'une seule commande, exécutez :
docker system prune -a -f --volumes
Image 2 - Supprimez tout avec une seule commande docker system prune
Mais qu'en est-il si vous avez besoin d'un contrôle plus granulaire ? C'est ce que nous allons voir ensuite.
docker container prune
En termes simples, cette commande supprime tous les conteneurs arrêtés.
Les conteneurs arrêtés restent sur votre système jusqu'à ce qu'ils soient supprimés manuellement. Ils peuvent occuper de l'espace disque et être difficiles à repérer, à moins que vous n'utilisiez un outil comme Docker Desktop Tableau de bord.
Comme docker system prune
, cette commande prend en charge les options :
--filter
vous permet de spécifier des paires clé-valeur pour contrôler quels conteneurs sont supprimés.-f
ou--force
, la demande de confirmation est ignorée.
Voici une liste des conteneurs qui ne fonctionnent pas :
Image 3 - Liste des conteneurs qui ne fonctionnent pas
Pour supprimer code-server
(et tout autre conteneur arrêté), exécutez :
docker container prune -f
Aucune confirmation ne vous sera demandée et, en quelques secondes, vous obtiendrez un résultat semblable à celui-ci :
Image 4 - Message de sortie de la taille des conteneurs
Et c'est ainsi qu'il n'y a plus de conteneurs arrêtés :
Image 5 - Liste des conteneurs qui ne fonctionnent pas (2)
Maintenant, occupons-nous des images inutilisées.
docker image prune
Comme pour la commande précédente, docker image prune
supprime les images inutilisées.
Par défaut, il ne supprime que les images pendantes, c'est-à-dire les images qui ne sont pas marquées et qui ne sont pas associées à un conteneur. Vous pouvez utiliser un drapeau optionnel pour supprimer toutes les images inutilisées, et pas seulement celles qui pendent.
Voici une liste des options disponibles
-a
ou--all
supprime toutes les images inutilisées au lieu des seules images pendantes.--filter
vous permet de spécifier des paires clé-valeur pour contrôler les images à supprimer.-f
ou--force
, la demande de confirmation est ignorée.
Voyons maintenant ce qu'il en est !
Voici une liste des images actuellement sur le système :
Image 6 - Liste des images Docker
Pour les supprimer tous en une seule commande, exécutez :
docker image prune -a -f
Vous verrez une sortie comme celle-ci dans le terminal :
Image 7 - Message de sortie de l'élagage de l'image
Ensuite, il ne reste plus d'images dans Docker Desktop :
Image 8 - Liste des images Docker (2)
Ensuite, nous allons nous occuper des volumes inutilisés.
docker volume prune
Comme son nom l'indique, la commande docker volume prune
supprime tous les volumes locaux inutilisés. En d'autres termes, il supprime les volumes qui ne sont référencés par aucun conteneur.
Par défaut, la commande ne supprime que les volumes anonymes - volumes sans nom créés par Docker au démarrage d'un conteneur. Pour supprimer des volumes nommés explicitement, vous devez fournir une option supplémentaire.
Voici les options qui s'offrent à vous :
-a
ou--all
supprime tous les volumes inutilisés au lieu des seuls volumes anonymes.--filter
vous permet de spécifier des paires clé-valeur pour contrôler les volumes à supprimer.-f
ou--force
, la demande de confirmation est ignorée.
Sur notre système, nous avons un seul volume créé par l'utilisateur à partir d'un fichier docker-compose.yml
:
Image 9 - Liste des volumes Docker
La commande suivante supprime tous les volumes locaux :
docker volume prune -a -f
Après l'avoir exécuté, vous obtiendrez un résultat similaire à celui-ci :
Image 10 - Message de sortie de l'élagage du volume
Aujourd'hui, il ne reste plus aucun volume :
Image 11 - Liste des volumes Docker (2)
Enfin, voyons comment supprimer les réseaux inutilisés.
docker network prune
Lorsque les conteneurs Docker communiquent entre eux, ils utilisent souvent des réseaux définis par l'utilisateur. Cependant, leurs réseaux restent généralement sur votre système une fois que ces conteneurs sont retirés.
La commande docker network prune
supprime les réseaux qui ne sont plus utilisés par aucun conteneur.
Comme les autres commandes d'élagage, elle comporte quelques options :
--filter
vous permet de spécifier des paires clé-valeur pour contrôler les réseaux à supprimer.-f
ou--force
, la demande de confirmation est ignorée.
Contrairement aux images, aux conteneurs ou aux volumes, vous ne pouvez pas inspecter visuellement les réseaux via Docker Desktop, vous devrez donc travailler à partir de la ligne de commande. Voici une liste des réseaux disponibles :
Image 12 - Liste des réseaux Docker
Pour supprimer tous les réseaux non associés à l'installation par défaut de Docker, exécutez :
docker network prune -a -f
Après avoir exécuté la commande, vous obtiendrez un résultat comme celui-ci :
Image 13 - Message de sortie de l'élagage du réseau
Tous les réseaux associés aux conteneurs précédemment en cours d'exécution ont disparu :
Image 14 - Liste des réseaux Docker
Notez toutefois que les trois réseaux restants sont essentiels au bon fonctionnement de Docker et ne peuvent pas être supprimés.
Et c'est tout pour l'utilisation de base des commandes docker prune
! Nous aborderons ensuite des sujets avancés tels que l'utilisation de ces commandes en toute sécurité et les meilleures pratiques pour les environnements de production et les environnements sensibles.
Utiliser Docker Prune en toute sécurité
Les commandes docker prune
permettent de récupérer rapidement de l'espace disque, mais elles doivent être utilisées avec prudence. utilisées avec précautionsurtout dans les environnements de production.
La suppression accidentelle de conteneurs, d'images ou de volumes importants peut entraîner une perte de données et perturber les flux de travail critiques. Pour éviter cela, il est préférable de comprendre ce qui sera supprimé avant d'exécuter une commande d'élagage.
Cette section explique les principales précautions à prendre pour utiliser docker prune
en toute sécurité.
Comprendre ce qui sera retiré
Les commandes prune
sont conçues pour ne supprimer que les ressources qui ne sont pas activement utilisées.
Par exemple, docker image prune
ne supprime que les images pendantes et docker volume prune
ne supprime que les volumes non attachés à des conteneurs. Cependant, l'ajout d'options telles que -a -f
supprimera toutes les images ou tous les volumes sans demander de confirmation.
En outre, dans les environnements complexes, il est facile d'oublier les dépendances, c'est pourquoi une double vérification avant l'élagage est toujours une bonne pratique.
Avant d'exécuter une commande prune
, vous devez inspecter votre système pour voir quelles ressources sont actuellement utilisées. Il y a plusieurs façons de procéder, et nous allons explorer les plus courantes dans cette section.
Utilisez cette commande pour afficher tous les conteneurs, y compris ceux qui sont arrêtés :
docker ps -a
Vous devriez obtenir un résultat similaire à celui-ci :
Image 15 - Liste de tous les conteneurs Docker
De même, utilisez cette commande pour lister toutes les images, y compris celles qui ne sont pas utilisées :
docker images
Le résultat sera structuré de la même manière que ci-dessus :
Image 16 - Liste de toutes les images Docker
Pour vérifier les volumes, exécutez la commande suivante lister tous les volumes :
docker volume ls
Image 17 - Liste de tous les volumes Docker
Examinez attentivement ces résultats pour vous assurer qu'aucune ressource critique ne sera supprimée par erreur.
Essai de sécurité
Malheureusement, Docker n'a toujours pas d'option intégrée pour une exécution à sec des commandes d'élagage, même si cela a été demandé il y a des années.
Pour cette raison, vous devez inspecter manuellement les ressources à l'aide des commandes énumérées dans la section précédente avant d'exécuter une commande d'élagage.
Si vous travaillez dans un environnement sensible où la persistance des données est essentielle, vous devez toujours créer une sauvegarde avant d'exécuter des commandes d'élagage qui affectent les volumes.
Bien sûr, il ne s'agit que de mesures de précaution, mais nous espérons qu'une option d'essai sera bientôt mise en œuvre.
Meilleures pratiques pour Docker Prune
Pour que votre environnement Docker ne soit pas encombré inutilement, il est important d'exécuter régulièrement les commandes prune
, voire de les automatiser.
Cette section vous présente les meilleures pratiques pour l'exécution des commandes docker prune
dans des environnements de production.
Utilisez régulièrement docker prune
Au fil du temps, Docker accumule des images inutilisées, des conteneurs arrêtés et des volumes inutiles, qui consomment tous un espace disque important.
L'exécution régulière de commandes d'élagage permet de maintenir votre environnement propre et d'éviter une utilisation excessive du disque. Vous devriez les inclure dans votreprogramme d'entretien .
Une fréquence de quelques semaines est un bon point de départ, mais si votre installation implique la création et le retrait fréquents de conteneurs, envisagez un calendrier plus fréquent.
Soyez prudent dans la production
Tout travail dans un environnement de production nécessite des précautions supplémentaires, et l'élagage de Docker ne fait pas exception.
Un moment d'inattention peut entraîner un temps d'arrêt ou une perte de données, et vous ne voulez pas en être responsable. Avant d'exécuter les commandes docker prune
dans un environnement de production, inspectez toujours les ressources du système à l'aide de docker ps -a
, docker images
et docker volume ls
, comme expliqué dans la section précédente.
En outre, il est conseillé d'utiliser des commandes d'élagage spécifiques plutôt que la commande globale docker system prune
, car il peut être plus facile de récupérer des suppressions involontaires.
Automatiser l'élagage de docker
Une autre bonne pratique consiste à rationaliser les efforts de nettoyage en automatisant les commandes docker prune
à l'aide de tâches programmées.
Sous Linux, vous pouvez mettre en place une tâche cron pour exécuter les commandes à intervalles réguliers, tandis que sous Windows, vous pouvez utiliser le planificateur de tâches pour une automatisation similaire. Cela permet de maintenir un système ordonné sans intervention manuelle. Toutefois, dans un environnement de production, veillez à ce que l'élagage automatisé n'interfère pas avec les charges de travail critiques.
Par exemple, cette tâche cron sous Linux exécute une commande d'élagage tous azimuts tous les dimanches à minuit :
0 0 * * 0 docker system prune -a -f
Résolution des problèmes liés à Docker Prune
Les commandes docker prune
sont une solution de choix pour récupérer de l'espace disque, mais elles ne suffisent pas toujours à garantir un espace suffisant pour extraire de nouvelles images ou exécuter de nouveaux conteneurs.
En outre, vous risquez de supprimer accidentellement des ressources importantes, d'où l'importance de discuter des stratégies de récupération.
Ces deux sujets seront abordés dans cette section.
Problèmes d'espace disque
Les images Docker peuvent être volumineuses - nous en avons récemment eu une de plus de 13 Go - et nous sommes sûrs qu'il en existe d'encore plus grandes. Ainsi, même après avoir exécuté docker prune
, vous pouvez constater que votre système manque toujours d'espace disque.
Pour savoir exactement l'espace utilisé par les images par les images, les conteneurs et les volumes, exécutez cette commande :
docker system df
Image 18 - Espace utilisé par Docker
Lorsque vous récupérez de l'espace disque avec les commandes docker prune
, ajoutez l'option -a
pour supprimer toutes les images, volumes ou conteneurs, et pas seulement les images pendantes ou anonymes. Bien entendu, n'oubliez pas les inconvénients potentiels de cette approche.
Si le problème d'espace disque persiste, votre seule option est d'augmenter l'espace disque disponible.
Se remettre d'un déménagement accidentel
La récupération est plus facile à dire qu'à faire. C'est pourquoi nous vous recommandons de comprendre ce qui sera supprimé par l'élagage avant d'exécuter la commande.
Néanmoins, si vous vous trouvez dans une situation où vous avez accidentellement élagué des conteneurs, des images ou des volumes importants, commencez par vérifier les journaux pour identifier ce qui a été supprimé.
Sous macOS, vous pouvez le faire en exécutant les deux commandes suivantes(options pour Windows et Linux) :
pred='process matches ".*(ocker|vpnkit).*" || (process in {"taskgated-helper", "launchservicesd", "kernel"} && eventMessage contains[c] "docker")'
/usr/bin/log stream --style syslog --level=debug --color=always --predicate "$pred"
/usr/bin/log show --debug --info --style syslog --last 30m --predicate "$pred" >/tmp/logs.txt
L'exécution de ces commandes permet de sauvegarder les 30 dernières minutes de logs liés à Docker dans /tmp/logs.txt
. Vous devez inspecter ces journaux pour déterminer quels conteneurs ou images ont été supprimés.
Pour les images supprimées, vous pouvez probablement les récupérer à partir d' un registre tel que Docker Hub. Une commande comme celle-ci devrait suffire :
docker pull <image_name>
Et pour les conteneurs supprimésvous pouvez toujours les recréer s'ils étaient basés sur des images persistantes :
docker run --name <container_name> <image_name>
Vous pouvez également restaurer les sauvegardes si elles sont disponibles, ce qui permet de récupérer les données des volumes et des conteneurs. À l'avenir, envisagez d'utiliser des outils pour les instantanés de volume afin d'éviter les pertes de données.
Cependant, la meilleure stratégie consiste à inspecter les ressources qui seront supprimées avant d'exécuter une commande d'élagage et de ne procéder que si vous êtes absolument certain que cela n'aura pas d'incidence sur votre flux de travail.
Résumé de Docker Prune
En conclusion, la famille de commandes docker prune
est un moyen puissant de récupérer de l'espace disque, mais elle comporte le risque de supprimer accidentellement des ressources dont vous avez besoin, ce qui entraînerait la perte de données. Ce risque est encore plus grand si vous utilisez les drapeaux optionnels -a -f
, qui supprimeront tout avec force.
Néanmoins, l'élagage reste une méthode de choix pour garder votre système propre et organisé.
Vous devez simplement être prudent, en particulier dans les environnements de production. Utilisez des commandes telles que docker ps -a
, docker images
, et docker volume ls
avant l'élagage pour répertorier tous les conteneurs, images et volumes. N'exécutez la commande d'élagage qu'après vous être assuré que vous êtes d'accord avec la suppression des ressources répertoriées (en supposant qu'elles ne sont pas utilisées par un conteneur en cours d'exécution).
Si vous souhaitez en savoir plus sur Docker, la conteneurisation et l'orchestration de conteneurs, consultez ces cours sur DataCamp :
FAQ
docker prune est-il sûr ?
En général, oui, mais il faut l'utiliser avec prudence. Il ne supprime que les ressources qui ne sont pas utilisées, mais son exécution sans vérification peut entraîner des suppressions accidentelles, en particulier dans les environnements de production. Des options supplémentaires telles que -a -f
supprimeront de force toutes les ressources inutilisées.
Quelle est la différence entre docker prune et docker rm ?
docker prune
supprime toutes les ressources inutilisées d'un type spécifique, tandis que docker rm
est utilisé pour supprimer manuellement des conteneurs ou des images spécifiques.
Est-ce que docker system prune supprime tout ?
Non, docker system prune
supprime les conteneurs, les réseaux, les images et le cache de construction inutilisés, mais il ne supprime pas les volumes nommés, sauf si l'option --volumes
est spécifiée après la commande.
Qu'est-ce qu'une image pendante dans Docker ?
Une image pendante est une image qui n'est pas marquée ou référencée par un conteneur. Il s'agit généralement d'images intermédiaires résiduelles issues de la compilation et qui peuvent être supprimées en toute sécurité à l'aide de la commande docker image prune
.
Apprenez-en plus sur Docker avec ces cours !
cours
Intermediate Docker
cursus
Containerization and Virtualization
blog
Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Nisha Arya Ahmed
20 min
blog
Q2 2023 DataCamp Donates Digest
blog
2022-2023 Rapport annuel DataCamp Classrooms
blog
Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Fereshteh Forough
4 min
blog