⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Supprimer les objets Docker inutilisés

Docker adopte une approche conservatrice pour nettoyer les objets inutilisés (souvent appelé "collecte des déchets"), tels que les images, conteneurs, volumes et réseaux. Ces objets ne sont généralement pas supprimés à moins que vous ne demandiez explicitement à Docker de le faire. Cela peut amener Docker à utiliser de l'espace disque supplémentaire. Pour chaque type d'objet, Docker fournit une commande prune. De plus, vous pouvez utiliser docker system prune pour nettoyer plusieurs types d'objets à la fois. Ce sujet montre comment utiliser ces commandes prune.

Nettoyer les images

La commande docker image prune vous permet de nettoyer les images inutilisées. Par défaut, docker image prune ne nettoie que les images pendantes. Une image pendante est une image qui n'est pas étiquetée et qui n'est référencée par aucun conteneur. Pour supprimer les images pendantes :

$ docker image prune

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y

Pour supprimer toutes les images qui ne sont pas utilisées par des conteneurs existants, utilisez le flag -a :

$ docker image prune -a

WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y

Par défaut, on vous demande de confirmer pour continuer. Pour contourner l'invite, utilisez le flag -f ou --force.

Vous pouvez limiter quelles images sont nettoyées en utilisant des expressions de filtrage avec le flag --filter. Par exemple, pour ne considérer que les images créées il y a plus de 24 heures :

$ docker image prune -a --filter "until=24h"

D'autres expressions de filtrage sont disponibles. Consultez la référence docker image prune pour plus d'exemples.

Nettoyer les conteneurs

Lorsque vous arrêtez un conteneur, il n'est pas automatiquement supprimé à moins que vous ne l'ayez démarré avec le flag --rm. Pour voir tous les conteneurs sur l'hôte Docker, y compris les conteneurs arrêtés, utilisez docker ps -a. Vous pourriez être surpris du nombre de conteneurs qui existent, surtout sur un système de développement ! Les couches inscriptibles d'un conteneur arrêté occupent encore de l'espace disque. Pour nettoyer cela, vous pouvez utiliser la commande docker container prune.

$ docker container prune

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y

Par défaut, on vous demande de confirmer pour continuer. Pour contourner l'invite, utilisez le flag -f ou --force.

Par défaut, tous les conteneurs arrêtés sont supprimés. Vous pouvez limiter la portée en utilisant le flag --filter. Par exemple, la commande suivante ne supprime que les conteneurs arrêtés plus anciens que 24 heures :

$ docker container prune --filter "until=24h"

D'autres expressions de filtrage sont disponibles. Consultez la référence docker container prune pour plus d'exemples.

Nettoyer les volumes

Les volumes peuvent être utilisés par un ou plusieurs conteneurs, et occupent de l'espace sur l'hôte Docker. Les volumes ne sont jamais supprimés automatiquement, car cela pourrait détruire des données.

$ docker volume prune

WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? [y/N] y

Par défaut, on vous demande de confirmer pour continuer. Pour contourner l'invite, utilisez le flag -f ou --force.

Par défaut, tous les volumes inutilisés sont supprimés. Vous pouvez limiter la portée en utilisant le flag --filter. Par exemple, la commande suivante ne supprime que les volumes qui ne sont pas étiquetés avec le label keep :

$ docker volume prune --filter "label!=keep"

D'autres expressions de filtrage sont disponibles. Consultez la référence docker volume prune pour plus d'exemples.

Nettoyer les réseaux

Les réseaux Docker n'occupent pas beaucoup d'espace disque, mais ils créent des règles iptables, des périphériques de réseau pont et des entrées de table de routage. Pour nettoyer ces éléments, vous pouvez utiliser docker network prune pour nettoyer les réseaux qui ne sont utilisés par aucun conteneur.

$ docker network prune

WARNING! This will remove all networks not used by at least one container.
Are you sure you want to continue? [y/N] y

Par défaut, on vous demande de confirmer pour continuer. Pour contourner l'invite, utilisez le flag -f ou --force.

Par défaut, tous les réseaux inutilisés sont supprimés. Vous pouvez limiter la portée en utilisant le flag --filter. Par exemple, la commande suivante ne supprime que les réseaux plus anciens que 24 heures :

$ docker network prune --filter "until=24h"

D'autres expressions de filtrage sont disponibles. Consultez la référence docker network prune pour plus d'exemples.

Tout nettoyer

La commande docker system prune est un raccourci qui nettoie les images, conteneurs et réseaux. Les volumes ne sont pas nettoyés par défaut, et vous devez spécifier le flag --volumes pour que docker system prune nettoie les volumes.

$ docker system prune

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - unused build cache

Are you sure you want to continue? [y/N] y

Pour également nettoyer les volumes, ajoutez le flag --volumes :

$ docker system prune --volumes

WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all volumes not used by at least one container
        - all dangling images
        - all build cache

Are you sure you want to continue? [y/N] y

Par défaut, on vous demande de confirmer pour continuer. Pour contourner l'invite, utilisez le flag -f ou --force.

Par défaut, tous les conteneurs, réseaux et images inutilisés sont supprimés. Vous pouvez limiter la portée en utilisant le flag --filter. Par exemple, la commande suivante supprime les éléments plus anciens que 24 heures :

$ docker system prune --filter "until=24h"

D'autres expressions de filtrage sont disponibles. Consultez la référence docker system prune pour plus d'exemples.