Docker elimina <ninguno> imágenes TAG

139
root@server:~# docker images -a        
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>                  <none>              5e2dfc857e73        5 days ago          261.6 MB
<none>                  <none>              d053e988f23d        5 days ago          261.6 MB
<none>                  <none>              1d5d4a2d89eb        5 days ago          261.6 MB
<none>                  <none>              ea0d189fdb19        5 days ago          100.5 MB
<none>                  <none>              26c6175962b3        5 days ago          100.5 MB
<none>                  <none>              73d5cec4a0b3        5 days ago          100.5 MB
<none>                  <none>              e19590e1bac1        5 days ago          100.5 MB

He intentado lo siguiente:

docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

Y lo siguiente:

docker rmi $(docker images -f "dangling=true" -q)

Obtiene el siguiente error:

docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.

Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]

Remove one or more images
K - La toxicidad en SO está aumentando.
fuente
Es un poco tarde pero tengo que agregar este comentario para otros usuarios. Si usa el símbolo del sistema de Windows, esto no funcionará. Porque el símbolo del sistema no admite funciones internas. Pruebe las líneas exactas con Windows PowerShell
er-han
1
docker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
Ondra Žižka
docker rmi $(docker images | grep "<none>" | awk "{print $3}")
David
5
docker rmi $(docker images -f dangling=true -q)
Jinna Balu
@Karl Morrison: Casi estuviste allí: simplemente perdiste -a (--todos) en docker images:)
mirekphd

Respuestas:

203

Puede probar y enumerar solo las imágenes sin etiquetar (aquellas sin etiquetas o con etiqueta sin etiqueta):

docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'

Sin embargo, es posible que otras personas necesiten algunas de esas imágenes sin etiquetar.

Prefiero eliminar solo las imágenes colgantes :

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

Como mencioné para docker 1.13+ en septiembre de 2016 en " Cómo eliminar imágenes de Docker antiguas y no utilizadas ", también puede hacer el image prunecomando :

docker image prune

Dicho esto, Janaka Bandara menciona en los comentarios :

Esto hizo no eliminar <none>imágenes-etiquetados para mí (por ejemplo foo/bar:<none>); Tuve que usar docker images --digestsydocker rmi foo/bar@<digest>

Janaka hace referencia a " Cómo eliminar una imagen firmada con una etiqueta " de Paul V. Novarese :

# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
pvnovarese/mprime        latest              459769dbc7a1        5 days ago          4.461 MB
pvnovarese/mprime        <none>              459769dbc7a1        5 days ago          4.461 MB

Pasos diagnósticos

Puede ver la diferencia en estas dos entradas si usa la --digests=trueopción (la entrada sin etiquetar tiene el resumen de la firma de Docker Content Trust):

# docker images --digests=true
REPOSITORY               TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
pvnovarese/mprime        latest              <none>                                                                    459769dbc7a1        5 days ago          4.461 MB
pvnovarese/mprime        <none>              sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00   459769dbc7a1        5 days ago     

Tenga en cuenta que Paul también menciona el número 18892 de Moby :

Después de extraer una imagen firmada, hay una entrada "extra" (con etiqueta <none>) en la docker imagessalida " ".
Esto dificulta rmila imagen (debe forzarla o, de lo contrario, primero elimine la entrada etiquetada correctamente o elimine por resumen.

VonC
fuente
6
Esto no me <none>quitó las imágenes etiquetadas (p foo/bar:<none>. Ej. ); Tuve que usar docker images --digestsy docker rmi foo/bar@<digest>como se describe en success.docker.com/KBase/…
Janaka Bandara
1
@JanakaBandara Gracias. He incluido su comentario en la respuesta (con algunos enlaces adicionales)
VonC
para mísudo docker rmi $(docker images --filter "dangling=true" -q --no-trunc) Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/images/json?filters=%7B%22dangling%22%3A%7B%22true%22%3Atrue%7D%7D: dial unix /var/run/docker.sock: connect: permission denied "docker rmi" requires at least 1 argument. See 'docker rmi --help'. Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] [flags] Remove one or more images
Jamie Hutber
@JamieHutber "docker rmi" requiere al menos 1 argumento. Eso sugiere que las imágenes de la ventana acoplable --filter "colgando = verdadero" -q --no-trunc no devuelve nada, lo que significa que no hay imágenes colgantes.
VonC
Gracias VonC en realidad no lo hacehutber@hutber-blade /var/www/dockerfile-wizard $ sudo docker images --filter "dangling=true" -q --no-trunc sha256:c58f4e4b10b1f862d78f96e90bdf13ffe37993279d0992be46d5c15dad51421e sha256:db28e821bc3f337caf711a664bc529be5db8894dd73c5b013ad814cc1e9fc21b sha256:257936750a7d43ae77c713c2cb18342be935de7d3b8fad23d6664fc64acfe753 sha256:6b815cefeb527885b2b9dd831f7f40b05942f00d1367274833a6274154d8ce43
Jamie Hutber
43
docker images | grep none | awk '{ print $3; }' | xargs docker rmi

Puedes probar esto simplemente

tansadio
fuente
1
La solución más rápida y fácil para mí
Mark
Tienes que agregar --forceal final. Entonces el comando se verá como- docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
Munim Dibosh
23

imagen de docker poda elimina todas las imágenes colgantes (aquellas sin etiqueta). docker image prune -a también eliminaría las imágenes que no tengan un contenedor que las use.

La diferencia entre imágenes colgantes y no utilizadas se explica en este hilo de stackoverflow .

herm
fuente
6

Puedes irte docker rmi $(docker images -f "dangling=true" -q). Consulte la documentación de imágenes para obtener más opciones.

$ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
<none>                      <none>              94870cda569b        4 seconds ago       673MB
python                      2.7                 320a06f42b5f        10 days ago         673MB
mysql                       latest              e799c7f9ae9c        2 months ago        407MB
gcavalcante8808/semaphore   latest              86e863e11461        2 months ago        537MB
redis                       latest              e32ef7250bc1        2 months ago        184MB
rabbitmq                    3.6.9-management    7e69e14cc496        2 months ago        179MB
rabbitmq                    3.6.9               eb2e4968538a        2 months ago        179MB
jordan/rundeck              latest              6d40b57b1572        2 months ago        660MB
rabbitmq                    3.5.6-management    dbfe8d18809a        19 months ago       304MB

$ docker rmi $(docker images --format '{{.ID}}' --filter=dangling=true)
Deleted: sha256:94870cda569b8cf5f42be25af107d464c993b4502a1472c1679bf2d213b6c0a6
GHETTO.CHiLD
fuente
5

De acuerdo con la documentación de la ventana acoplable, solo puede enumerar imágenes sin etiquetar (colgantes) con

$ docker images -f "dangling=true"

y redirigirlos a un docker rmicomando así:

$ docker rmi $(docker images -f "dangling=true" -q) --force

Observe que el -qparámetro que solo muestra los ID numéricos de los contenedores.

OzzyCheca
fuente
1
¿No es similar a lo que propuse en mi respuesta en 2015?
VonC
5

Puede comprobar si el filtro 'colgando' ya no funciona

$ docker images -f “dangling=true” -q
Error response from daemon: Invalid filter 'dangling'

Utilice la poda del sistema Docker para eliminar las imágenes colgantes

$ docker system prune
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all dangling build cache
Are you sure you want to continue? [y/N]

Puede utilizar --forcepara no solicitar confirmación

$ docker system prune --force
Chetabahana
fuente
5

Simplemente ejecute este comando:

docker image prune --filter="dangling=true"
Ragnar
fuente
4

Lo he encontrado docker image prune -fmás útil y lo uso todo el tiempo durante mi trabajo diario, el uso de la etiqueta -fno solicitará confirmación. Más detalles aquí

Justjais
fuente
3

Elimine las imágenes que tienen nonecomo nombre de repositorio usando lo siguiente:

docker rmi $(docker images | grep "^<none" | awk '{print $3}')

Elimina las imágenes que tienen noneetiqueta o nombre de repositorio:

docker rmi $(docker images | grep "none" | awk '{print $3}')
Jerome Anthony
fuente
3
docker rmi --force $(docker images -q --filter "dangling=true")
Rafaf Tahsin
fuente
2

docker system prune hará el truco, elimina

- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache

¡Pero utilícelo, con la precaución!

Rajath
fuente
2

Para eliminar todas las imágenes con nonetenemos que asegurarnos de que eliminamos todos los contenedores detenidos que pueden usar ejecutar:

docker rm $(docker ps -a -q)

luego podemos eliminar todas las imágenes:

docker image prune
yevgeniy
fuente
1

Para eliminar imágenes colgantes, utilice:

docker image rm $(docker images --format "{{.ID}}" --filter "dangling=true")

Consulte mi respuesta aquí para obtener una descripción más detallada: https://unix.stackexchange.com/a/445664/292327

Aditya Satyavada
fuente
1

El siguiente comando me funciona. esto es simplemente imágenes grep "" y obtener la identificación de la imagen de la ventana acoplable y eliminar todas las imágenes. Un solo comando simple como debe ser.

docker rmi $(docker images |grep "<none>"| awk '{print $3}')

Jogendra Kumar
fuente
1

Esta es una extensión de la respuesta de tansadio:

Si recibe el siguiente error:

Error response from daemon: conflict: unable to delete <> (must be forced) - image is being used by stopped container <>

Puedes forzarlo con --force:

docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
Vishrant
fuente
1

Lo siguiente eliminará todas las <none>imágenes.

docker rmi $(docker images | grep none | awk '{print $3}')

Puede forzar la eliminación cambiando docker rmia, docker rmi -faunque no recomiendo hacerlo.

Algunas de las <none>imágenes podrían estar relacionadas con otras imágenes, así que para estar seguro, no use -fetiquetas.

nPcomp
fuente
0

Es simple y claro,

Incluso me tomó 3 días entender este simple y nítido error.

La imagen de la ventana acoplable no se ha creado correctamente

Step 7/13 : COPY jupyter_notebook_config.py /root/.jupyter/
 ---> bf29ce6fe6dc
Step 8/13 : COPY notebooks /notebooks
COPY failed: stat /var/lib/docker/tmp/docker-builder776981166/notebooks: no such file or directory
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              bf29ce6fe6dc        9 seconds ago       1.27GB
ubuntu              16.04               a51debf7e1eb        3 weeks ago         116MB

Luego eliminé la octava línea de Dockerfile, esta vez fue una señal de éxito.

Successfully built b6724370f8ca
Successfully tagged dem:expo
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker run -it -p 8888:8888 dem:expo
[I 06:11:38.984 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:11:39.011 NotebookApp] Serving notebooks from local directory: /
[I 06:11:39.011 NotebookApp] The Jupyter Notebook is running at:
[I 06:11:39.011 NotebookApp] http://(296d81166725 or 127.0.0.1):8888/?token=496feb282ef749c05277ef57a51e8a56fedb1c6b337b9f92

Dice dem: expo etiquetado con éxito, esta línea es imp durante el proceso de la ventana acoplable.

El exorcista
fuente
0

docker rmi -f $ (imágenes de docker -a | awk 'NR> 1 && $ 2 == "" {imprimir $ 3}')

iamfaith
fuente
0

Todas

Compartir el comando de PowerShell para los amantes de Windows (en caso de que no tenga bash, grep o awk)

(docker images) -like '*<none>*' | ForEach-Object { 
  $imageid=($_ -split "\s+")[2]
  docker rmi -f $imageid
}
Jhony Polanía
fuente
0

Ejecute el siguiente comando para eliminar las imágenes con docker rmi

docker images --filter "dangling=true"      
Jatinder Dhaliwal
fuente
0

Retire todos los contenedores salidos

docker rm $(docker container ls -a -f status=exited -q)

o retire los contenedores de acuerdo con un patrón

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi
Elton Sandré
fuente
0

intente esto para ver la lista de imágenes de Docker ID con etiqueta <none>

docker images -a | awk '/^<none>/ {print $3}'

y luego puede eliminar todas las imágenes con etiqueta <none>. esto funcionó para mí.

docker rmi $(docker images -a | awk '/^<none>/ {print $3}')
Nur Zazin
fuente
0

100% funciona: imágenes de la ventana acoplable | grep none | awk '{print $ 3}' | xargs docker rmi -f

sudhir tataraju
fuente
-1

tratar

docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "<none>" {print $3}') , aunque puede haber comandos más limpios

Actualizado

usuario2915097
fuente
1
Eso también eliminará las imágenes que no están etiquetadas como <ninguno>, lo cual es un gran nono.
K - La toxicidad en SO está aumentando.
He actualizado mi respuesta
user2915097
¡El comando docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "" {print $3}no hace nada!
K - La toxicidad en SO está aumentando.
-1

Simplemente elimine las imágenes usando sus ID:

# docker rmi 5e2dfc857e73 d053e988f23d ...
Daniel Borges
fuente
-2

Las imágenes colgantes son fantasmas de las compilaciones y extracciones anteriores, simplemente elimínelas con: docker rmi $ (docker images -f "dangling = true" -q)

Nathan Borik
fuente
El OP afirma que ya intentó este comando exacto pero falló. Además, esta respuesta ya se ha dado al menos dos veces.
CaringDev
-5
docker rmi $(docker images -a -q)

Indicó que las siguientes imágenes están en uso. Creo que este comando elimina las imágenes no deseadas.

K - La toxicidad en SO está aumentando.
fuente
2
¿No elimina esto todas las imágenes?
marianobianchi
3
esto elimina todas las imágenes no utilizadas y no debe marcarse como la respuesta correcta.
Ghashange