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 supprimer un, j'obtiens:
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 est-ce que je peux les retirer? Pourquoi y a-t-il un tel conflit?
docker images -q | %{docker rmi -f $_}
sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
docker ps -a -q | %{docker rm -f $_}
docker system prune
. Donc, pour essuyer tout:docker kill $(docker ps -q)
pour arrêter les conteneurs suivis d'undocker system prune -a
va tout supprimer - voir stackoverflow.com/a/44309011/247708Raison possible: La raison peut être que cette image est actuellement utilisée par un conteneur en cours d'exécution. Dans ce cas, vous pouvez répertorier les conteneurs en cours d'exécution, arrêter le conteneur correspondant, puis supprimer l'image:
Si vous ne pouvez pas trouver de conteneur par docker ps, vous pouvez l'utiliser pour répertorier tous les conteneurs déjà sortis et les supprimer.
Remarque: veillez à supprimer tous les conteneurs sortis en même temps si vous utilisez des
Volume-Only
conteneurs. Ceux-ci restent enExit
état, mais contiennent des données utiles .la source
sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm
(merci à github.com/dotcloud/docker/issues/3258 ) puis avecsudo docker rmi 70c0e19168cf
Exit
état. Si vous utilisez des conteneurs de volume de données uniquement, ils ne restent pas en cours d'exécution.awk '/Exit/ {print $1}'
Error response from daemon: No such container: ...
. Il est difficile de dire ce qui doit être remplacé et avec quoi dois-je le remplacer. Ne pas utiliser...
La raison de l'erreur est que même si l'image n'avait pas de balise, il existe toujours un conteneur créé sur cette image qui pourrait être dans l'
exited
état. Vous devez donc vous assurer que vous avez arrêté et supprimé tous les conteneurs créés sur ces images. La commande suivante vous aide à supprimer tous les conteneurs qui ne sont pas en cours d'exécution:Maintenant, cela supprime toutes les
<none>
images non intermédiaires pendantes :la source
L'image peut être actuellement utilisée par un conteneur en cours d'exécution, vous devez donc d'abord arrêter et supprimer le ou les conteneurs.
Ensuite, vous pouvez essayer de supprimer l'image:
Vous devez être sûr que cette image ne dépend pas d'autres images (sinon vous devez d'abord les supprimer).
J'avais un cas étrange dans lequel je n'avais plus de conteneurs encore en vie (
docker ps -a
rien retourné) mais je n'ai pas réussi à supprimer l'image et sa dépendance à l'image.Pour résoudre ces cas particuliers, vous pouvez forcer la suppression de l'image avec ceci:
la source
Dans Bash:
Cela supprimera toutes les images avec le nom "<aucun>". J'ai trouvé ces images redondantes.
la source
docker images|grep \<none\>|awk '{print $3}' | xargs docker rmi
, elle peut nécessiter unesudo
autorisationJ'ai trouvé la réponse dans cette commande:
J'ai eu votre problème lorsque j'ai supprimé certaines images utilisées, et je ne m'en suis pas rendu compte (en utilisant
docker ps -a
).la source
Depuis Docker ver. 1.13.0 (janvier 2017) il y a la
system prune
commande:la source
En plus de la réponse de Sunny:
Pour supprimer toutes les images sur une machine Windows (avec Docker pour Windows) dans une fenêtre PowerShell, procédez comme suit:
Pour supprimer tous les conteneurs sur une machine Windows (avec Docker pour Windows) dans une fenêtre PowerShell, procédez comme suit:
la source
Tout d'abord, supprimez tous les conteneurs à l'aide de la commande suivante
Ensuite, supprimez l'image par son ID à l'aide de la commande suivante
la source
Vous devez d'abord arrêter / supprimer tous les conteneurs inutiles créés sur ces images.
Jetez un œil: Comment supprimer les anciens conteneurs Docker .
Après cela, utilisez la solution @marcell.
la source
Retirez tous les conteneurs
Forcer la suppression de toutes les images Docker
la source
Vous pouvez simplement ajouter
--force
à la fin de la commande. Comme:Pour le rendre plus intelligent, vous pouvez ajouter:
Ici, dans
docker ps
$ 1 se trouve la première colonne, c'est-à-dire l'ID du conteneur Docker.Et
docker images
$ 3 est la troisième colonne, c'est-à-dire l'ID d'image Docker.la source
La version la plus compacte d'une commande pour supprimer toutes les images non balisées est:
la source
Pour supprimer une image Docker, vous devez exécuter la commande suivante:
Ainsi, pour supprimer toutes les images Docker, vous pouvez exécuter la commande suivante:
Maintenant, si vous souhaitez supprimer toutes les images Docker (y compris les images en cours d'utilisation), vous pouvez ajouter le drapeau
-f
, par exemple:la source
Utilisation
ou
Supprimez toutes les images pendantes. Si
-a
est spécifié, il supprimera également toutes les images qui ne sont référencées par aucun conteneur.Remarque: vous êtes invité à confirmer avant que le pruneau ne supprime quoi que ce soit, mais aucune liste de ce qui sera potentiellement supprimé ne s'affiche. De plus,
docker image ls
ne prend pas en charge le filtrage négatif, il est donc difficile de prédire quelles images seront réellement supprimées.Comme indiqué dans la documentation de Docker pour le pruneau .
la source
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 l'image Docker
meltwater/docker-cleanup
.De cette façon, vous n'avez pas besoin de le nettoyer à la main.
Exécutez simplement:
Il s'exécutera toutes les 30 minutes (ou aussi longtemps que vous le définissez à l'aide de l'option DELAY_TIME = 1800) et nettoiera les conteneurs et les images sortants.
Plus de détails: https://github.com/meltwater/docker-cleanup/blob/master/README.md
la source
J'ai trouvé une solution avec le script Powershell qui le fera pour moi.
Le script arrête d'abord tous les conteneurs, puis supprime tous les conteneurs, puis supprime les images nommées par l'utilisateur.
Regardez ici http://www.devcode4.com/article/powershell-remove-docker-containers-and-images
la source