Je souhaite supprimer toutes les versions des images de menu fixe avec des noms contenant une chaîne donnée (imagename
).
J'ai essayé le ci-dessous, 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")
Version légèrement plus exacte - greps uniquement sur le nom du référentiel:
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
docker images
utilise en fait le premier argument de position comme nom d'image à filtrer. Aucun grep et awk requis. L'option -q
renverra uniquement les identifiants d'images correspondants pouvant être transmis à docker rmi
.
docker rmi --force $(docker images -q imagename | uniq)
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 n'importe quel conteneur en cours d'exécution avant de supprimer l'image:
Sudo docker stop $(docker ps | grep <your_container_name> | awk '{print $1}')
Sudo docker rm $(docker ps | grep <your_container_name> | awk '{print $1}')
Sudo docker rmi $(docker images | grep <your_image_name> | awk '{print $3}') --force
Dans docker ps
, $ 1 est la 1ère colonne, c'est-à-dire l'ID du conteneur de menu fixe Et $ 3 est la 3ème colonne, c'est-à-dire l'id de l'image du menu fixe
docker rmi `docker images | awk '$1 ~ /imageName/ {print $3}'`
Cela supprimera toutes les images du nom "imageName" . Dans certains cas, cela pourrait donner une erreur du type "l'image est référencée dans un ou plusieurs référentiels". Dans ce cas, utilisez force delete.
docker rmi -f `docker images | awk '$1 ~ /imageName/ {print $3}'`
Une autre façon peut être:
docker images | awk '{ OFS = ":" }$1 ~ /imageName/ {print $1,$2}'
J'ai aussi une autre réponse concise. La seule modification consistait à supprimer l'indicateur -I {}
inutile.
docker images | grep 'imagename' | xargs docker rmi
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'identifiant de la 3ème colonne.
Remarque mineure: .__ D'après ce que nous vivons, il semble que vous ne soyez plus capable, depuis le menu fixe 18.03, de supprimer les images non étiquetées en fonction du nom. Vous devez soit utiliser le nom + balise comme indiqué ci-dessus, soit utiliser l'ID.
docker images --format={{.ID}} | xargs -I % sh -c 'docker rmi --force % 2>&1'
docker rmi $(docker image ls repo/image_name* | awk {'print $1":"$2'} )
docker rmi $(docker images --filter=reference="IMAGENAME:TAG")
par exemple si j'ai les images suivantes
REPOSITORY TAG IMAGE ID CREATED SIZE
abcdefg/hij 7.0.0-beta-4.0 3128835950cd 7 days ago 51.4MB
abcdefg/hij-action 7.0.0-beta-4.0 42a7255beb74 7 days ago 97.4MB
abcdefg/hij-test 7.0.0-beta-4.0 17246aed35d0 7 days ago 97.4MB
abcdefg/hij-server 7.0.0-beta-4.0 42c45e561f2c 7 days ago 335MB
abcdefg/hij-init 7.0.0-beta-3.0 f648bb622933 7 days ago 55.2MB
abcdefg/hij-dir 7.0.0-beta-3.0 0db07d3aaccf 7 days ago 97.4MB
abcdefg/hij-mount 7.0.0-beta-3.0 18d1c0e1502c 4 weeks ago 33.7MB
Ensuite, 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/
Mettez en place une solution à cette question pour répondre à mes besoins, qui n’a pas été postée auparavant.
Je voulais faire correspondre les images construites localement: library/myapp
que j'ai renommé, étiqueté et poussé vers un référentiel privé: myrepo.org/library/myapp
. Une fois qu'ils sont poussés, je veux nettoyer le registre local de docker.
Et je me fiche de savoir si rien n’est trouvé ou si la commande génère une erreur. Ainsi ajouté || true
à la fin pour l'inclusion dans les scripts.
docker rmi $(docker image ls */library/myApp --format '{{.Repository}}:{{.Tag}}') || true