Comment puis-je supprimer les images de Docker?

j'ai les images suivantes:

alex@alexvps:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              70c0e19168cf        5 days ago          1.069 GB
<none>              <none>              c2ce80b62174        8 days ago          399.2 MB
<none>              <none>              60afe4036d97        8 days ago          325.1 MB

et quand j'essaie d'en enlever un je reçois:

alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images

Comment puis-je les enlever? Pourquoi est-il un tel conflit?

234
demandé sur Bryson 2014-01-28 10:04:18

14 réponses

pour supprimer toutes les images, utilisez la commande

docker rmi $(docker images -q)

pour supprimer tous les conteneurs, utilisez la commande

docker rm $(docker ps -a -q)

Avertissement: Cela détruira toutes vos images et les conteneurs. Il ne sera pas possible de les restaurer!

Cette solution est fournie par Techoverflow.net .

431
répondu Sunny 2017-09-18 12:51:00

raison Possible: La raison peut être que cette image est actuellement utilisé par l'exécution d'un conteneur. Dans ce cas, vous pouvez lister les conteneurs en cours d'exécution, arrêter le conteneur concerné et ensuite supprimer l'image:

docker ps
docker stop <containerid>
docker rm <containerid>
docker rmi <imageid>

si vous ne trouvez pas de conteneur par docker ps, vous pouvez l'utiliser pour lister tous les conteneurs déjà sortis et les enlever.

docker ps -a | grep 60afe4036d97
docker rm <containerid>

Note: attention de supprimer tous les conteneurs sortis en une seule fois dans le cas où vous utilisez des conteneurs Volume-Only . Ceux-ci restent dans l'état Exit , mais contient des données utiles .

89
répondu Jiri 2017-07-03 09:24:57

la raison de l'erreur est que même si l'image n'avait aucune étiquette, il existe toujours un conteneur créé sur cette image qui pourrait être dans l'état exited . Donc, vous devez vous assurer que vous avez arrêté et supprimé tous les conteneurs créés sur ces images. La commande suivante vous aide à retirer tous les conteneurs qui ne fonctionnent pas:

docker rm `docker ps -aq --no-trunc --filter "status=exited"`

maintenant, cela supprime toutes les images non intermédiaires pendantes <none> :

docker rmi `docker images --filter 'dangling=true' -q --no-trunc`

Note: pour arrêter tous les conteneurs en marche:

docker stop `docker ps -q`
56
répondu eldos 2015-01-25 10:18:21

dans bash:

for i in `sudo docker images|grep \<none\>|awk '{print }'`;do sudo docker rmi $i;done

cela permettra d'éliminer toutes les images avec le nom "". j'ai trouvé ces images redondantes.

19
répondu marcell 2014-03-06 04:46:06

l'image peut être actuellement utilisée par un conteneur en cours d'exécution, donc vous devez d'abord arrêter et enlever le(s) conteneur (s).

docker stop <container-name>
docker rm <container-id>

alors vous pourriez essayer de supprimer l'image:

docker rmi <image-id>

Vous devez être sûr que cette image ne dépend pas d'autres images (sinon, vous devez les supprimer en premier).

j'ai eu un cas étrange dans lequel je n'avais plus de conteneurs encore vivants ( docker ps -a rien retourné) mais je ne pouvais pas gérer la suppression de l'image et de l'image de la dépendance.

pour résoudre ces cas spéciaux, vous pouvez forcer le retrait de l'image avec ceci:

docker rmi -f <image-id>
17
répondu madx 2017-09-18 14:24:01

j'ai trouvé la réponse dans cette commande:

docker images --no-trunc | grep none | awk '{print }' | xargs docker rmi

j'ai eu votre problème quand j'ai supprimé certaines images qui étaient utilisées et je ne m'en suis pas rendu compte (en utilisant docker ps -a ).

14
répondu ivangoblin 2014-08-25 10:31:18

depuis Docker ver. 1.13.0 (janvier 2017) il y a la commande system prune :

$ docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
-a, --all     Remove all unused images not just dangling ones
-f, --force   Do not prompt for confirmation
    --help    Print usage
8
répondu alexyz78 2017-06-01 13:33:55

premièrement, retirer tous les conteneurs en utilisant la commande suivante:

sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}

ensuite, supprimez l'image par son ID en utilisant la commande suivante

sudo docker rmi <image-id>
6
répondu Muheed 2017-09-18 11:41:43

vous devez arrêter/supprimer tous les conteneurs inutiles créés sur ces images en premier.

Avoir un coup d'oeil: Comment supprimer de vieux conteneurs Docker .

après cela, utilisez la solution @marcell.

4
répondu tgrigoryan 2017-05-23 10:31:39

enlever tous les conteneurs

docker ps -q -a | xargs docker rm

Force supprimer toutes les images docker

docker rmi -f $(docker images -f dangling=true -q)
4
répondu All Іѕ Vаиітy 2017-03-13 11:59:10

la version la plus compacte de la commande pour supprimer toutes les images non étiquetées est:

docker rmi $(docker images | grep "^<none>" | awk '{print $"3"}')
3
répondu red 2017-02-16 14:42:57

si vous souhaitez nettoyer automatiquement/périodiquement les conteneurs sortis et supprimer les images et les volumes qui ne sont pas utilisés par un conteneur en cours d'exécution, vous pouvez télécharger cette image meltwater/docker-cleanup.

de cette façon, vous n'avez pas besoin d'aller nettoyer à la main

il suffit d'exécuter:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw  -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest

il s'exécute toutes les 30min (ou aussi longtemps que vous le paramétrez en utilisant L'option DELAY_TIME=1800) et nettoie les conteneurs et les images sortis.

plus de détails: https://github.com/meltwater/docker-cleanup/blob/master/README.md

1
répondu Innocent Anigbo 2017-06-01 13:20:29

pour supprimer une image de Docker, vous devez exécuter la commande suivante:

$ docker rmi <docker_image_id>

donc, pour supprimer toutes les images de Docker vous pouvez exécuter la commande suivante:

$ docker rmi $(docker images -q)

maintenant, si vous voulez supprimer toutes les images de Docker (y compris les images qui sont en usage), vous pouvez ajouter le drapeau-f, par exemple:

$ docker rmi -f $(docker images -q)
1
répondu José David García Rodríguez 2017-07-06 22:26:12

, vous pouvez deru --force à la fin de la commande. comme : sudo docker rmi <docker_image_id> --force

pour en savoir plus intelligent vous pouvez ajouter comme:

sudo docker stop $(docker ps | grep <your_container_name> | awk '{print }')

sudo docker rm $(docker ps | grep <your_container_name> | awk '{print }')

sudo docker rmi $(docker images | grep <your_image_name> | awk '{print }') --force

ici dans docker ps 1 $ est la 1ère colonne C.-à-d. numéro d'identification du conteneur docker

et docker images 3 $ est la 3e colonne C.-à-d. docker image id

0
répondu kushalbhattad 2018-06-14 09:26:06