Docker prune supprime les objets inutiles comme les con­te­neurs à l’arrêt, les volumes superflus, les anciens réseaux ou les images. Docker prune optimise ainsi l’uti­li­sa­tion du disque dur et libère de l’espace.

Docker prune : qu’est-ce que c’est ?

Docker prune, ou system prune, est une commande Docker utile pour purger les res­sources su­per­flues, et ainsi gagner de l’espace mémoire. Si les con­te­neurs Docker (con­tai­ners), les images, les réseaux et les volumes restent inu­ti­li­sés pendant une période prolongée, ils peuvent occuper une quantité con­si­dé­rable d’espace de stockage. La commande prune permet d’éliminer ra­pi­de­ment ces res­sources et de maintenir ainsi un système propre et per­for­mant.

Les en­vi­ron­ne­ments de dé­ve­lop­pe­ment génèrent souvent des con­te­neurs tem­po­raires. Cela entraîne une ac­cu­mu­la­tion rapide de res­sources inutiles. Docker prune nettoie non seulement les con­te­neurs et les images, mais aussi les réseaux et les volumes devenus inutiles. Cela simplifie con­si­dé­ra­ble­ment la gestion des res­sources Docker et réduit le risque d’un système encombré et surchargé.

Quand utiliser la commande Docker prune ?

La commande prune permet de répondre à dif­fé­rentes si­tua­tions dans le travail quotidien avec Docker. Quatre scénarios typiques d’uti­li­sa­tion sont présentés ci-après.

Optimiser les processus de travail : les en­vi­ron­ne­ments Docker sont largement utilisés pour le dé­ve­lop­pe­ment, les tests et la pro­duc­tion. Sans un nettoyage régulier, les res­sources inutiles s’ac­cu­mu­lent ra­pi­de­ment. Cette surcharge augmente les besoins en mémoire et peut affecter les per­for­mances du système. En sup­pri­mant ces res­sources, Docker prune permet une gestion plus efficace des res­sources, es­sen­tielle dans les en­vi­ron­ne­ments Cloud où les coûts dépendent du stockage et de la capacité de trai­te­ment utilisés.

Renforcer la sécurité : les res­sources Docker su­per­flues et obsolètes peuvent également présenter des risques de sécurité. En sup­pri­mant les con­te­neurs, les images, les réseaux et les volumes inu­ti­li­sés, Docker prune réduit le risque de laisser sans pro­tec­tion des com­po­sants obsolètes et po­ten­tiel­le­ment non sécurisés. Un éco­sys­tème Docker épuré contribue à réduire la surface d’attaque et à améliorer la sécurité de l’ensemble de l’in­fras­truc­ture in­for­ma­tique.

Améliorer les per­for­mances : un en­vi­ron­ne­ment Docker surchargé peut nuire aux per­for­mances du système en sol­li­ci­tant inu­ti­le­ment des res­sources telles que le pro­ces­seur et la mémoire. Un nettoyage avec Docker prune permet de libérer de la mémoire et accroît l’ef­fi­ca­cité de la gestion et de l’exécution des con­te­neurs. Cela permet de réduire con­si­dé­ra­ble­ment les temps de char­ge­ment, d’accélérer le dé­ploie­ment des ap­pli­ca­tions et d’améliorer la réac­ti­vité globale du système.

Main­te­nance sim­pli­fiée : une exécution régulière de Docker prune simplifie con­si­dé­ra­ble­ment la main­te­nance de votre en­vi­ron­ne­ment Docker. La sup­pres­sion de ces éléments obsolètes allège le travail de gestion des dé­ve­lop­peurs. Par ailleurs, la vi­si­bi­lité des com­po­sants Docker actifs et per­ti­nents est améliorée, ac­cé­lé­rant ainsi le diag­nos­tic et la ré­so­lu­tion des problèmes. Cela permet non seulement de gagner du temps dans la gestion, mais aussi de permettre aux équipes de se con­cen­trer davantage sur le dé­ve­lop­pe­ment et l’amé­lio­ra­tion de leurs ap­pli­ca­tions, plutôt que de se battre avec des res­sources inutiles.

Syntaxe : comment utiliser Docker prune ?

Vous avez un en­vi­ron­ne­ment Docker et vous souhaitez purger des res­sources pour libérer de l’espace de stockage et sim­pli­fier la gestion ? Pour ce faire, il suffit d’exécuter la commande suivante pour accéder aux services de prune :

docker system prune
bash

Les con­te­neurs arrêtés, les images, les réseaux et les volumes non utilisés sont iden­ti­fiés par défaut et proposés au nettoyage. Docker vous demande ensuite de confirmer leur sup­pres­sion. Saisissez y et appuyez sur la touche Entrée ; vous pouvez aussi utiliser di­rec­te­ment l’option -f pour ignorer la con­fir­ma­tion et effectuer la sup­pres­sion im­mé­dia­te­ment :

docker system prune -f
bash

Conseil : avant d’utiliser Docker prune, il est judicieux de vérifier quelles res­sources Docker sont présentes dans le système. Exécutez les commandes suivantes pour obtenir une liste de tous les con­te­neurs, images, réseaux et volumes :

docker ps -a
docker images
docker volume ls
docker network ls
bash

Options Docker prune

Le tableau suivant donne un aperçu des dif­fé­rentes options de docker system prune.

Option Des­crip­tion
--all, -a Supprime toutes les res­sources Docker inu­ti­li­sées.
--force, -f Force le nettoyage sans con­fir­ma­tion de l’uti­li­sa­teur.
--volumes Supprime les volumes superflus.
--filter, -f Permet de filtrer les res­sources à supprimer en fonction de critères.
--help Affiche une aide pour utiliser la commande.

Docker prune : tutoriel sur l’ap­pli­ca­tion pratique de la commande

Docker propose dif­fé­rentes commandes qui per­met­tent un nettoyage ciblé de types de res­sources spé­ci­fiques. Vous disposez ainsi de la souplesse né­ces­saire pour contrôler pré­ci­sé­ment quelles res­sources doivent être sup­pri­mées.

Docker prune --filter

Vous pouvez appliquer des filtres pour sé­lec­tion­ner exac­te­ment les res­sources à supprimer, telles que les con­te­neurs, images, réseaux ou volumes. Cette fonc­tion­na­lité est par­ti­cu­liè­re­ment utile dans les en­vi­ron­ne­ments de dé­ve­lop­pe­ment, où de nom­breuses res­sources tem­po­raires sont souvent créées puis oubliées, risquant d’encombrer le système.

La syntaxe générale est la suivante :

docker <command> prune --filter "filter=<value>"
bash

Docker permet d’utiliser dif­fé­rents filtres pour cibler pré­ci­sé­ment les res­sources à supprimer. Voici les prin­ci­pales options de filtrage :

  • until : filtre les res­sources en fonction de leur an­cien­neté. Vous pouvez spécifier une durée avec une unité comme h (heures), m (minutes) ou s (secondes).
docker <command> prune --filter "until=<duration>"
bash

Dans cet exemple, la commande supprime tous les con­te­neurs arrêtés depuis plus de 24 heures :

docker container prune --filter "until=24h"
bash
  • label : filtre les res­sources en fonction de leurs éti­quettes (label) Docker. Cela permet de cibler uni­que­ment les éléments ayant un label spé­ci­fique.
docker <command> prune --filter "label=<label>"
bash

Pour nettoyer tous les volumes superflus qui ont une étiquette mylabel, suivez cet exemple :

docker volume prune --filter "label=mylabel"
bash
  • dangling : identifie les res­sources inu­ti­li­sées ou non associées à des con­te­neurs actifs.
docker <command> prune --filter "dangling=true"
bash

Cet exemple montre comment supprimer toutes les images inu­ti­li­sées (dangling) :

docker image prune --filter "dangling=true"
bash

Chaque commande peut être adaptée en rem­pla­çant <command> par container, volume, network ou image, selon le type de ressource à nettoyer. Les filtres per­met­tent ainsi un nettoyage ciblé, ce qui permet d’éviter de supprimer par erreur des éléments im­por­tants.

Outre les filtres prin­ci­paux men­tion­nés ci-dessus, il existe des options de filtrage plus spé­ci­fiques en fonction du type de ressource :

  • before et since pour les images : filtre les images en fonction de leur date de création, avant ou à partir d’une date donnée
  • exited pour conteneur : filtre les con­te­neurs en fonction de leur statut Exit (par exemple exited=0 pour les con­te­neurs terminés/quittés avec succès)

Supprimer des res­sources Docker

Étape 1 : ouvrez un terminal ou une ligne de commande sur votre système.

Étape 2 : exécutez Docker prune pour nettoyer le système :

docker {resource} prune
bash

Remplacez {resource} par le type de res­sources que vous souhaitez nettoyer. Les valeurs valides sont container, image, volume et network.

Supprimer des con­te­neurs Docker

Docker ne libère pas au­to­ma­ti­que­ment les con­te­neurs par défaut lorsqu’ils ont terminé leur cycle de vie. Il est donc fortement re­com­mandé de souvent vérifier les con­te­neurs arrêtés et de les nettoyer si né­ces­saire afin de libérer les res­sources bloquées pour les con­te­neurs en cours d’exécution. Il y a deux méthodes pour ce faire.

  • docker rm : la commande docker rm est prévue pour supprimer ma­nuel­le­ment un ou plusieurs con­te­neurs Docker. Si vous savez exac­te­ment quels con­te­neurs doivent être supprimés, c’est la méthode la plus ap­pro­priée. Il suffit d’indiquer ex­pli­ci­te­ment les iden­ti­fiants ou les noms des con­te­neurs que vous souhaitez supprimer. Vous pouvez ainsi ne supprimer que certains con­te­neurs de votre en­vi­ron­ne­ment, sans en affecter d’autres.

Voici un exemple dans lequel nous sou­hai­tons supprimer les con­te­neurs nommés container1 et container2 :

docker rm container1 container2
bash
  • docker container prune : à l’inverse, docker container prune est une commande qui sert à supprimer plusieurs con­te­neurs à l’arrêt, en une seule fois. Cette méthode est idéale et très efficace pour libérer de l’espace ra­pi­de­ment en sup­pri­mant tous les con­te­neurs arrêtés qui n’ont pas de processus en cours.
docker container prune
bash

Tous les con­te­neurs à l’arrêt sont alors ré­per­to­riés. Docker demande une con­fir­ma­tion avant de les supprimer. Cette commande est très pratique dans les en­vi­ron­ne­ments où de nombreux con­te­neurs tem­po­raires sont créés et ne servent plus par la suite.

Pour la gestion et la main­te­nance quo­ti­diennes de votre en­vi­ron­ne­ment Docker, il est conseillé d’utiliser docker container prune ré­gu­liè­re­ment pour purger au­to­ma­ti­que­ment le système de con­te­neurs à l’arrêt. Cela permet de gagner du temps et de s’assurer qu’aucune ressource inutile n’affecte les per­for­mances du système. En revanche, docker rm est idéal pour supprimer de manière ciblée et contrôlée certains con­te­neurs, que ce soit pour des tests, du dé­ve­lop­pe­ment ou d’autres besoins spé­ci­fiques.

Supprimer des images Docker

Les images Docker sont les éléments cons­ti­tu­tifs des con­te­neurs. Avec le temps, elles peuvent avoir de nombreux tags et versions. Lorsque vous créez ou mettez à jour de nouvelles images, il reste souvent d’anciennes images ou des images inu­ti­li­sées, appelées « dangling ». Il s’agit donc d’images Docker sans tag ni lien avec des con­te­neurs actifs. Elles se forment gé­né­ra­le­ment après des mises à jour ou des cons­truc­tions d’images et ne sont plus né­ces­saires. Celles-ci occupent de l’espace sur votre système et peuvent en affecter les per­for­mances, en par­ti­cu­lier si beaucoup d’images de ce type s’y trouvent.

Avec Docker prune, vous pouvez iden­ti­fier et supprimer les images su­per­flues :

docker image prune [Options]
bash

Les options possibles sont par exemple :

  • -a, --all : cette option supprime non seulement les images dangling, mais aussi les images sim­ple­ment inu­ti­li­sées.
docker image prune -a
bash
  • -f, --force : par défaut, Docker demande une con­fir­ma­tion avant de vraiment supprimer les images. Avec -f ou --force, vous pouvez sauter cette étape de con­fir­ma­tion et effectuer le nettoyage dans la foulée.
docker image prune -f
bash

Supprimer toutes les images Docker

Vous pouvez également supprimer toutes les images Docker inutiles de votre système encore plus ra­pi­de­ment. Pour utiliser ef­fi­ca­ce­ment Docker prune, ouvrez d’abord le terminal ou l’invite de commande et saisissez la commande suivante :

docker image prune -a --force
bash

Assurez-vous de pouvoir iden­ti­fier les images à supprimer avant de procéder au nettoyage étant donné que l’option -a peut également supprimer des images inu­ti­li­sées qui pour­raient encore être né­ces­saires.

Supprimer des volumes Docker

Les volumes sont per­sis­tants et stockent des données même si le conteneur associé n’est plus en cours d’exécution. Avec le temps, ces volumes peuvent grossir et occuper inu­ti­le­ment des res­sources.

docker volume prune
bash

Cette commande recherche tous les volumes sur lesquels il n’y a plus de con­te­neurs actifs et suggère une liste des volumes proposés à la sup­pres­sion. Une con­fir­ma­tion est requise avant que le nettoyage ne s’effectue.

À l’inverse, docker volume rm est une commande qui supprime pré­ci­sé­ment que des volumes Docker par­ti­cu­liers. Cela est utile si vous savez exac­te­ment quel volume doit être supprimé, qu’il soit ou non utilisé par un conteneur.

Conseil

Avant de supprimer un volume avec docker volume rm, vérifiez son contenu ou sau­ve­gar­dez les données im­por­tantes, car la sup­pres­sion est dé­fi­ni­tive et inclut bases de données, fichiers de con­fi­gu­ra­tion ou autres contenus per­sis­tants.

Pour supprimer un volume Docker spé­ci­fique, utilisez la commande docker volume rm suivie du nom ou de l’iden­ti­fiant du volume :

docker volume rm volume_name
bash

Une fois de plus, assurez-vous de connaître le nom ou l’iden­ti­fiant exact du volume à supprimer étant donné que cette commande supprime dé­fi­ni­ti­ve­ment les données et ne peut pas être annulée.

Supprimer des réseaux Docker

Dans Docker, les réseaux sont une com­po­sante fon­da­men­tale par laquelle les con­te­neurs com­mu­ni­quent entre eux, qu’ils soient localisés sur un même hôte ou répartis sur plusieurs hôtes. Les réseaux Docker sub­sis­tent même après l’arrêt ou la sup­pres­sion des con­te­neurs. À terme, cela peut conduire à une ac­cu­mu­la­tion de réseaux obsolètes qui occupent inu­ti­le­ment des res­sources. La commande docker prune network est un moyen simple d’iden­ti­fier et de supprimer les réseaux qui ne sont plus utilisés.

La commande suit la syntaxe suivante :

docker network prune [OPTIONS]
bash

Docker génère alors une liste de tous les réseaux qui ne sont plus utilisés par des con­te­neurs actifs ou qui ne sont plus ré­fé­ren­cés. Le système demande con­fir­ma­tion avant de supprimer dé­fi­ni­ti­ve­ment les réseaux.

Docker prune : nos conseils pour une gestion optimale

  • Nettoyage au­to­ma­tisé : utilisez des scripts ou des outils au­to­ma­ti­sés pour nettoyer les images, les con­te­neurs et les volumes Docker devenus inutiles. Ainsi, votre en­vi­ron­ne­ment reste propre et les per­for­mances sont op­ti­mi­sées !
  • Patchs de sécurité et mises à jour : veillez à ce que les moteurs Docker, les systèmes d’ex­ploi­ta­tion hôtes et toutes les images Docker soient ré­gu­liè­re­ment vérifiés et mis à jour en termes de sécurité afin de minimiser les failles de sécurité po­ten­tielles.
  • Sur­veil­lance et jour­na­li­sa­tion : servez-vous d’outils de sur­veil­lance et de jour­na­li­sa­tion pour contrôler les per­for­mances des con­te­neurs, détecter les évé­ne­ments inat­ten­dus et en­cou­ra­ger la « proac­ti­vité » dans la main­te­nance.
  • Sau­ve­gardes externes : mettre en place des routines pour les sau­ve­gardes externes des données im­por­tantes à partir des con­te­neurs Docker. Cela pourrait se faire en sau­ve­gar­dant de manière régulière le contenu de la base de données ou de fichiers de con­fi­gu­ra­tion.
  • Contrôle manuel avant la sup­pres­sion : avant de supprimer certaines res­sources, vérifiez soig­neu­se­ment si vous n’en avez plus besoin. Vous réduirez ainsi le risque de perte ac­ci­den­telle de données et/ou l’in­ter­rup­tion de processus en cours.
Conseil

Si vous venez de vous lancer dans Docker, nous vous re­com­man­dons vivement notre tutoriel Docker très complet.

Compute Engine
La solution IaaS idéale pour gérer vos charges de travail
  • vCPU aux coûts avan­ta­geux et cœurs dédiés per­for­mants
  • Sans en­ga­ge­ment pour plus de flexi­bi­lité
  • As­sis­tance par des experts 24h/24 et 7j/7 incluse
Aller au menu principal