Je souhaite supprimer toutes les versions des images docker dont les noms contiennent une chaîne donnée ( imagename
).
J'ai essayé ce qui suit, mais cela ne semble pas fonctionner:
docker images | grep 'imagename' | xargs -I {} docker rmi
Essayez ce qui suit:
docker rmi $(docker images |grep 'imagename')
Windows PowerShell:
docker rmi $(docker images --format "{{.Repository}}:{{.Tag}}"|findstr "imagename")
docker images |grep 'imagename'
Version légèrement plus exacte - grepping uniquement sur le nom du référentiel:
la source
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
la source
docker images --format '{{.Repository}}:{{.Tag}}
filtre la sortie afin que seuls repo et tag soient affichés (iefoo:latest
).grep 'imagename
filtre ces lignes uniquement sur les images qui contiennentimagename
. Mettre cela dans$()
évalue cela et passe à l'extérieurdocker rmi
qui supprime les images qui correspondent.docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' --filter=reference='imagename:*')'
docker rmi $( docker images --format '{{.Repository}}:{{.Tag}}' | Select-String -Pattern 'imagename')
docker images
utilise en fait le premier argument de position comme nom d'image à filtrer. Aucun grep et awk requis. L'-q
option renverra uniquement les identifiants d'images correspondants qui peuvent être alimentésdocker rmi
.Le
uniq
est nécessaire pour supprimer les doublons, au cas où vous auriez la même image étiquetée différemment.la source
Vous pouvez simplement ajouter
--force
à la fin de la commande. Comme:sudo docker rmi <docker_image_id> --force
Pour le rendre plus intelligent, vous pouvez arrêter tout conteneur en cours d'exécution avant de supprimer l'image:
Dans
docker ps
, $ 1 est la 1ère colonne, c'est-à-dire l'identifiant du conteneur Docker et $ 3 est la 3ème colonne, c'est-à-dire l'identifiant de l'image dockerla source
Je trouve ma réponse plus simple.
Exemple, le nom de votre image est
python_image
.Ensuite, votre code devrait être :
docker rmi $(docker images --filter=reference='python_image' --format "{{.ID}}")
J'espère que ça aide.
la source
J'ai également eu une autre réponse concise. Le seul changement a été de supprimer l'
-I {}
indicateur inutile .docker images | grep 'imagename' | xargs docker rmi
la source
Cela supprimera toutes les images du nom "imageName". Dans certains cas, cela peut donner une erreur comme "l'image est référencée dans un ou plusieurs référentiels". Dans ce cas, utilisez la suppression forcée.
Une autre façon peut être:
la source
Pour une raison quelconque, je n'ai pu utiliser aucune des réponses données ici. Voici ce qui a fonctionné pour moi.
docker images | grep \"gcr.io/kubernetes-learn-197422/last-week-weather-service\" | awk '{print $3}' | xargs docker rmi
awk '{print $3}'
est une partie importante. Il extrait l'id de la 3ème colonne.la source
Pour moi travaillé ( Docker version 19.03.5 ):
La commande " docker images 'imagename' -q " listera toutes les images id de l'argument guillemet simple, donc en le concaténant avec docker rmi (ou docker rmi -f pour forcer), il supprimera toutes les images avec le nom sélectionné
la source
la source
Remarque mineure: d'après ce que nous vivons, il semble que vous ne soyez plus en mesure de supprimer les images non marquées en fonction du nom depuis le docker 18.03. Vous devez soit utiliser le nom + étiquette comme indiqué ci-dessus, soit utiliser l'ID.
la source
docker rmi $(docker images --filter=reference="IMAGENAME:TAG")
par exemple si j'ai les images suivantes
Puis
docker rmi $(docker images --filter=reference="abcd*:*4.0")
supprimera les quatre premières images.Pour plus d'informations, veuillez consulter https://docs.docker.com/engine/reference/commandline/images/
la source
docker rmi $(docker images -q --filter=reference="IMAGENAME:TAG")
Mettre en place une solution à cette question pour répondre à mes besoins, qui n'a pas été publiée auparavant.
Je voulais faire correspondre les images construites localement:
library/myapp
que je l' ai renommé, tagged, et poussé à une prise en pension privé:myrepo.org/library/myapp
. Une fois qu'ils sont poussés, je veux nettoyer le registre local des dockers.Et je m'en fiche si rien n'est trouvé ou si la commande génère une erreur. Ainsi ajouté
|| true
à la fin pour inclusion dans les scripts.la source
Sur la base de la réponse de @ Aditya, vous pouvez également créer une fonction bash pour supprimer les images à l'aise. Mettez cette fonction dans votre
~/.profile
. Créez une nouvelle session shell ou créez-la parsource ~/.profile
.Usage:
la source
Informatif:
Donnez cette erreur:
Probablement parce que mes images ressemblent à ceci:
J'ai dû utiliser l'identifiant de l'image et faire cette commande:
Pour supprimer les conteneurs sortis:
la source