Quiero eliminar todas las versiones de las imágenes de la ventana acoplable con nombres que contienen una cadena determinada ( imagename
).
He intentado lo siguiente, pero parece que no funciona:
docker images | grep 'imagename' | xargs -I {} docker rmi
docker images |grep 'imagename'
Versión un poco más exacta: grepping solo en el nombre del repositorio:
fuente
docker rmi $(docker images --format '{{.Repository}}:{{.Tag}}' | grep 'imagename')
fuente
docker images --format '{{.Repository}}:{{.Tag}}
filtra la salida para que solo se muestren el repositorio y la etiqueta (es decirfoo:latest
).grep 'imagename
filtra esas líneas solo a las imágenes que contienenimagename
. Poner eso en$()
evalúa eso y pasa al exterior,docker rmi
que elimina las imágenes que coincidieron.docker rmi -f $(docker images --format '{{.Repository}}:{{.Tag}}' --filter=reference='imagename:*')'
docker rmi $( docker images --format '{{.Repository}}:{{.Tag}}' | Select-String -Pattern 'imagename')
docker images
en realidad usa el primer argumento posicional como un nombre de imagen para filtrar. No se requieren grep ni awk. La-q
opción devolverá solo las ID de imágenes coincidentes a las que se puede alimentardocker rmi
.Se
uniq
requiere para eliminar duplicados, en caso de que tenga la misma imagen etiquetada de manera diferente.fuente
Simplemente puede agregar
--force
al final del comando. Me gusta:sudo docker rmi <docker_image_id> --force
Para hacerlo más inteligente , puede detener cualquier contenedor en ejecución antes de eliminar la imagen:
En
docker ps
, $ 1 es la primera columna, es decir, la identificación del contenedor de la ventana acoplable y $ 3 es la tercera columna, es decir, la identificación de la imagen de la ventana acoplablefuente
Encuentro mi respuesta más simple.
Por ejemplo, el nombre de su imagen es
python_image
.Entonces tu código debería ser :
docker rmi $(docker images --filter=reference='python_image' --format "{{.ID}}")
Espero que esto ayude.
fuente
También recibí otra respuesta concisa. El único cambio fue eliminar la
-I {}
bandera innecesaria .docker images | grep 'imagename' | xargs docker rmi
fuente
Esto eliminará todas las imágenes con el nombre "imageName". En algunos casos, esto puede dar un error como "se hace referencia a la imagen en uno o más repositorios". En ese caso, use la eliminación forzada.
Otra forma puede ser:
fuente
Por alguna razón, no pude usar ninguna de las respuestas dadas aquí. Esto es lo que funcionó para mí.
docker images | grep \"gcr.io/kubernetes-learn-197422/last-week-weather-service\" | awk '{print $3}' | xargs docker rmi
awk '{print $3}'
es una parte importante. Extrae la identificación de la tercera columna.fuente
Para mí funcionó ( Docker versión 19.03.5 ):
El comando " docker images 'imagename' -q " enumerará todas las identificaciones de imágenes del único argumento entre comillas, por lo que al concatenarlo con docker rmi (o docker rmi -f para forzar) eliminará todas las imágenes con el nombre seleccionado
fuente
fuente
Comentario menor: por lo que estamos experimentando, parece que, desde la ventana acoplable 18.03, ya no puede eliminar imágenes sin etiquetar basándose solo en el nombre. Debe usar el nombre + etiqueta como se indicó anteriormente o usar la identificación.
fuente
docker rmi $(docker images --filter=reference="IMAGENAME:TAG")
por ejemplo si tengo las siguientes imágenes
Luego
docker rmi $(docker images --filter=reference="abcd*:*4.0")
eliminará las primeras cuatro imágenes.Para obtener más información, consulte https://docs.docker.com/engine/reference/commandline/images/
fuente
docker rmi $(docker images -q --filter=reference="IMAGENAME:TAG")
Arme una solución a esta pregunta para satisfacer mis necesidades, que no se publicó anteriormente.
Yo quería hacer coincidir las imágenes construidas localmente:
library/myapp
que he cambiado de nombre, Tagged, y empujó a un acuerdo de recompra privada:myrepo.org/library/myapp
. Una vez que se presionan, quiero limpiar el registro de Docker local.Y no me importa si no se encuentra nada o si el comando arroja un error. Así añadido
|| true
al final para su inclusión en los guiones.fuente
Según la respuesta de @ Aditya, también puede crear una función bash para eliminar imágenes a gusto. Pon esta función a tu
~/.profile
. Cree una nueva sesión de shell o consígalasource ~/.profile
.Uso:
fuente
Informativo:
Da este error:
Probablemente porque mis imágenes se ven así:
Tuve que usar la identificación de la imagen y hacer este comando:
Para eliminar contenedores salidos:
fuente