Accéder au contenu principal

Docker Prune : Un guide complet avec des exemples pratiques

Supprimez les conteneurs, images, volumes et réseaux inutilisés en toute sécurité à l'aide d'une seule commande shell. Gardez votre système en ordre et récupérez de l'espace disque en supprimant les ressources Docker inutilisées.
Actualisé 6 févr. 2025  · 20 min de lecture

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 :

Demande de confirmation de l'élagage du système Docker

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

Supprimez tout avec une seule commande docker system prune

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 :

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 :

Message de sortie de la taille des conteneurs

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 :

Liste des conteneurs qui ne fonctionnent pas (2)

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 :

Liste des images Docker

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 :

Message de sortie de l'élagage de l'image

Image 7 - Message de sortie de l'élagage de l'image

Ensuite, il ne reste plus d'images dans Docker Desktop :

Liste des images Docker (2)

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:

Liste des volumes Docker

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 :

Message de sortie de l'élagage du volume

Image 10 - Message de sortie de l'élagage du volume

Aujourd'hui, il ne reste plus aucun volume :

Liste des volumes Docker (2)

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 :

Liste des réseaux Docker

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 :

Message de sortie de l'élagage du réseau

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 :

Liste des réseaux Docker

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 :

Liste de tous les conteneurs Docker

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 :  

Liste de toutes les images Docker

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

Liste de tous les volumes Docker

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

Espace utilisé par Docker

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


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Scientifique de données senior basé en Croatie. Rédacteur technique de premier plan avec plus de 700 articles publiés, générant plus de 10 millions de vues. Auteur du livre Machine Learning Automation with TPOT.
Sujets

Apprenez-en plus sur Docker avec ces cours !

cours

Introduction to Docker

4 hr
24.5K
Gain an introduction to Docker and discover its importance in the data professional’s toolkit. Learn about Docker containers, images, and more.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus