GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Guide complet pour supprimer les images Docker

Si vous continuez à créer des images Docker, vous commencerez bientôt à manquer d'espace. La suppression d'images docker anciennes et inutilisées libérera beaucoup d'espace disque pour vous.

Dans cet article, je vais discuter de divers scénarios de suppression d'images Docker de votre système.

Moyens de supprimer des images Docker

Tout d'abord, vérifiez les images docker présentes sur votre système avec cette commande :

docker images

La sortie affichera toutes les images Docker et leur ID d'image. Vous avez besoin de ce nom d'image (sous la colonne du référentiel) ou de l'ID d'image pour supprimer une image docker de votre système.

[email protected]:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              67e34c1c9477        2 weeks ago         114MB
ubuntu              latest              775349758637        6 weeks ago         64.2MB

Avec l'ID d'image, vous pouvez supprimer l'image Docker de la manière suivante :

docker rmi image_name_or_id

Vous pouvez également utiliser cette commande car les deux sont identiques :

docker image rm image_id

Voici à quoi la sortie peut ressembler :

[email protected]:~$ docker rmi 67e34c1c9477
Untagged: debian:latest
Untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
Deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
Deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb

Si vous utilisez l'ID d'image, toutes les images associées à cet ID seront supprimées.

Supprimer l'image Docker associée à un conteneur

La vie aurait été tellement plus simple si vous pouviez simplement supprimer des images docker comme ça. Mais cela n'arrive pas souvent.

Si vous avez des conteneurs associés à l'image docker, vous rencontrerez des erreurs lorsque vous essayerez de supprimer l'image.

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (cannot be forced) - image is being used by running container 13dc0f4226dc

Vous devez d'abord arrêter le conteneur :

[email protected]:~$ docker stop 13dc0f4226dc
13dc0f4226dc

Le problème est que même si vous arrêtez le conteneur, il se plaindra toujours si vous essayez de supprimer l'image :

[email protected]:~$ docker rmi 67e34c1c9477
Error response from daemon: conflict: unable to delete 67e34c1c9477 (must be forced) - image is being used by stopped container 5ced86b1fcee

Vous avez deux options ici :

  • Forcer la suppression d'une image Docker (le conteneur associé restera dans le système)
  • Supprimez le conteneur associé, puis supprimez l'image docker

Pour forcer la suppression d'une image docker, vous pouvez utiliser l'option -f :

docker rmi -f image_id

Pour supprimer un conteneur, puis supprimer l'image, vous pouvez utiliser quelque chose comme ceci :

docker rm container_id
docker rmi image_id

Supprimer l'image Docker associée à plusieurs conteneurs

La vie serait encore un peu plus simple si une image docker était associée à un seul conteneur. Mais une image peut être associée à plusieurs conteneurs et la suppression de ce type d'image docker devient pénible.

Vous verrez une erreur comme celle-ci :

[email protected]:~$ docker rmi 775349758637
Error response from daemon: conflict: unable to delete 775349758637 (must be forced) - image is referenced in multiple repositories

Tout d'abord, vous devez rechercher tous les conteneurs associés à un nom d'image (et non à un ID).

docker ps -a -q --filter ancestor=docker_image_name
  • -a option affiche tous les conteneurs en cours d'exécution et arrêtés.
  • -q option affiche uniquement l'ID du conteneur.

Et puis vous devez tous les arrêter. Vous pouvez utiliser les ID de conteneurs un par un, mais cela prendra trop de temps. Vous pouvez utiliser la magie de pipe et xargs pour arrêter tous les conteneurs associés à une image :

docker ps -a -q --filter ancestor=ubuntu | xargs docker stop

Ensuite, vous pouvez soit supprimer les conteneurs arrêtés, soit forcer la suppression de l'image (comme vous l'avez vu dans la section précédente).

Si vous souhaitez supprimer tous les conteneurs associés à une image, exécutez simplement cette commande :

docker ps -a -q --filter ancestor=ubuntu | xargs docker rm

Et maintenant, vous pouvez supprimer l'image Docker à l'aide de la commande présentée précédemment dans ce didacticiel.

Supprimer plusieurs images Docker à la fois

Vous pouvez également supprimer plusieurs images Docker en une seule commande. C'est la même chose que la commande précédente. Il vous suffit de spécifier les ID d'image ou les noms d'image.

docker rmi image_id_1 image_id_2 image_id_3

Bien sûr, vous devrez arrêter tous les conteneurs en cours d'exécution associés aux images.

Supprimer toutes les images docker inutilisées et pendantes en même temps

Avant de voir cela, laissez-moi vous expliquer ce que sont les images inutilisées et pendantes :

Toute image Docker associée à un type de conteneur (arrêté ou en cours d'exécution) est une image utilisée. Si une image Docker n'a aucun conteneur associé, elle devient une image Docker inutilisée.

Une image docker pendante "signifie que vous avez créé la nouvelle version de l'image, mais qu'elle n'a pas reçu de nouveau nom. Ainsi, les anciennes images que vous avez deviennent l'image pendante. Ces anciennes images sont celles qui ne sont pas taguées et qui affichent sur leur nom lorsque vous exécutez la commande 'docker images'."

Si vous souhaitez supprimer les images pendantes, vous pouvez utiliser l'option prune :

docker image prune

Si vous souhaitez supprimer à la fois les images inutilisées et les images pendantes, vous pouvez utiliser prune avec l'option -a :

docker image prune -a

Vous devriez voir l'espace libéré à la fin de la sortie :

[email protected]:~$ 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
Deleted Images:
untagged: ubuntu:latest
untagged: [email protected]:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
untagged: debian:latest
untagged: [email protected]:79f0b1682af1a6a29ff63182c8103027f4de98b22d8fb50040e9c4bb13e3de78
deleted: sha256:67e34c1c9477023c0ce84c20ae5af961a6509f9952c2ebbf834c5ea0a286f2b8
deleted: sha256:f2b4f0674ba3e6119088fe8a98c7921ed850c48d4d76e8caecd7f3d57721b4cb
untagged: fedora:latest
untagged: [email protected]:d4f7df6b691d61af6cee7328f82f1d8afdef63bc38f58516858ae3045083924a
deleted: sha256:f0858ad3febdf45bb2e5501cb459affffacef081f79eaa436085c3b6d9bd46ca
deleted: sha256:2ae3cee18c8ef9e0d448649747dab81c4f1ca2714a8c4550eff49574cab262c9

Total reclaimed space: 308.3MB

Vous pouvez être un peu intelligent avec la commande prune et supprimer uniquement les anciennes images inutilisées et pendantes. Donc, si vous voulez supprimer ceux qui datent de plus de 24 heures, utilisez-le comme ceci :

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

Supprimer toutes les images Docker de votre système

Peut-être êtes-vous dans un environnement de test et souhaitez-vous recommencer à zéro en supprimant toutes les images Docker.

Pour supprimer toutes les images Docker, vous devez d'abord arrêter tous les conteneurs en cours d'exécution.

docker ps -a -q | xargs docker rm

Vous pouvez maintenant supprimer toutes les images de cette manière :

docker images -a -q | xargs docker rmi -f

C'est ça. Je pense que c'est assez de matériel de référence pour supprimer les images docker et vous devriez avoir une meilleure compréhension de ce sujet maintenant. Vous pouvez également consulter le didacticiel pour supprimer les conteneurs Docker.

Si vous avez des questions ou des suggestions, veuillez laisser un commentaire ci-dessous.


Docker
  1. Qu'est-ce qu'un conteneur Docker :un guide d'introduction pour les débutants

  2. Comment déplacer des images Docker entre les hôtes

  3. Comment partager des images Docker avec d'autres

  4. Guide complet du débutant sur la journalisation Docker

  5. Comment modifier les images Docker

Gardez vos images Docker gérables avec Docker Image Prune

Comment utiliser Docker Commit pour modifier les images de conteneur

Commandes Docker pour la gestion du cycle de vie des conteneurs (Guide définitif)

Partage d'images Docker sur Docker Hub

Guide du débutant sur le monde Docker

Comment répertorier / rechercher / extraire des images docker sous Linux