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.