none - remove docker image by tag
Docker elimina las imágenes de la etiqueta<none> (19)
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)
Obtenga 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
Puede verificar si el filtro ''colgando'' ya no funciona
$ docker images -f “dangling=true” -q
Error response from daemon: Invalid filter ''dangling''
Use 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 usar
--force
para no solicitar confirmación
$ docker system prune --force
A continuación se eliminarán todas las imágenes
<none>
docker rmi $(docker images | grep none | awk ''{print $3}'')
Puede forzar la eliminación cambiando
docker rmi
a
docker rmi -f
aunque no recomiendo hacerlo.
Algunas de las imágenes
<none>
podrían estar relacionadas con otras imágenes, por lo que para estar seguro no use la etiqueta
-f
.
De acuerdo con la documentación de la ventana acoplable, solo puede enumerar imágenes sin etiquetar (colgando) con
$ docker images -f "dangling=true"
y redirigirlos al comando
docker rmi
así:
$ docker rmi $(docker images -f "dangling=true" -q) --force
Observe
-q
param que solo muestra ID numéricos de contenedores.
El siguiente comando está funcionando para mí. esto es simplemente "" grep imágenes y obtener la identificación de la imagen acoplable y eliminar todas las imágenes. Comando simple simple como tiene que hacerlo.
docker rmi $(docker images |grep "<none>"| awk ''{print $3}'')
Elimine las imágenes que
none
tienen
none
como nombre del repositorio utilizando lo siguiente:
docker rmi $(docker images | grep "^<none" | awk ''{print $3}'')
Elimine imágenes que
none
tengan etiqueta o nombre de repositorio:
docker rmi $(docker images | grep "none" | awk ''{print $3}'')
Es simple y claro,
Incluso me tomó 3 días entender este error simple y claro.
La imagen de la ventana acoplable no se creó 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 etiquetado con éxito dem: expo, esta línea es imp durante el proceso de acoplamiento.
Esta es una extensión de la respuesta de tansadio:
Si obtiene 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
He encontrado que
docker image prune -f
muy útil y lo uso todo el tiempo durante mi trabajo diario, el uso de la etiqueta
-f
no solicitará confirmación.
Más detalles
aquí
Las imágenes colgantes son fantasmas de las compilaciones y extracciones anteriores, simplemente elimínelas con: docker rmi $ (docker images -f "dangling = true" -q)
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
Puede ir a
docker rmi $(docker images -f "dangling=true" -q)
.
Consulte la
documentación
de las
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
Puede probar y enumerar solo las imágenes sin etiquetar (aquellas sin etiquetas o con etiquetas sin etiquetas):
docker images -q -a | xargs docker inspect --format=''{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}''|grep -v '':''
Sin embargo, algunas de esas imágenes sin etiquetar podrían ser necesarias para otros.
Prefiero eliminar solo 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 Docker antiguas y no utilizadas
", también puede hacer el
comando de
image prune
:
docker image prune
Dicho esto, Janaka Bandara menciona en los comentarios :
Esto no eliminó las imágenes etiquetadas con
<none>
para mí (por ejemplo,foo/bar:<none>
); Tuve que usardocker images --digests
ydocker rmi foo/bar@<digest>
Janaka hace referencia a " Cómo quitar 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 opción
--digests=true
(la entrada sin etiquetar tiene el resumen de 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 problema de moby 18892 :
Después de extraer una imagen firmada, hay una entrada "extra" (con la etiqueta
<none>
) en la salida de "docker images
".
Esto hace que sea difícilrmi
la imagen (debe forzarla o, de lo contrario, primero debe eliminar la entrada etiquetada correctamente o eliminar por resumen.
Simplemente elimine las imágenes con sus ID:
# docker rmi 5e2dfc857e73 d053e988f23d ...
docker rmi -f $ (imágenes de docker -a | awk ''NR> 1 && $ 2 == "" {print $ 3}'')
tratar
docker rmi -f $(docker images -a | awk ''NR> 1 || $2 = "<none>" {print $3}'')
, aunque puede haber comandos más limpios
Actualizado
la poda de imagen de Docker elimina todas las imágenes colgantes (aquellas con la etiqueta none). podar imagen podar -a también eliminaría cualquier imagen que no tenga un contenedor que las use.
La diferencia entre las imágenes colgantes y no utilizadas se explica en este hilo de .
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 úsalo con precaución!
docker images | grep none | awk ''{ print $3; }'' | xargs docker rmi
Puedes probar esto simplemente
docker rmi $(docker images -a -q)
Indicó las siguientes imágenes en uso. Creo que este comando elimina las imágenes no deseadas.