una - ¿Cómo puedo borrar las imágenes de Docker?
imagenes docker (15)
Desde Docker ver. 1.13.0 (enero de 2017) está el comando de system prune
del system prune
:
$ docker system prune --help
Usage: docker system prune [OPTIONS]
Remove unused data
Options:
-a, --all Remove all unused images not just dangling ones
-f, --force Do not prompt for confirmation
--help Print usage
Tengo las siguientes imágenes:
alex@alexvps:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 70c0e19168cf 5 days ago 1.069 GB
<none> <none> c2ce80b62174 8 days ago 399.2 MB
<none> <none> 60afe4036d97 8 days ago 325.1 MB
y cuando intento quitar uno de ellos obtengo:
alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn''t deleted
2014/01/28 00:54:00 Error: failed to remove one or more images
¿Cómo puedo eliminarlos? ¿Por qué hay tal conflicto?
El motivo del error es que aunque la imagen no tenía ninguna etiqueta, todavía existe un contenedor creado en esa imagen que podría estar en el estado de exited
. Por lo tanto, debe asegurarse de haber detenido y eliminado todos los contenedores creados en esas imágenes. El siguiente comando le ayuda a eliminar todos los contenedores que no se están ejecutando:
docker rm `docker ps -aq --no-trunc --filter "status=exited"`
Ahora esto elimina todas las imágenes <none>
no intermedias colgantes:
docker rmi `docker images --filter ''dangling=true'' -q --no-trunc`
Nota: Para detener todos los contenedores en ejecución:
docker stop `docker ps -q`
Encontré la respuesta en este comando:
docker images --no-trunc | grep none | awk ''{print $3}'' | xargs docker rmi
Tuve un problema cuando eliminé algunas imágenes que estaban siendo usadas y no me di cuenta (usando la docker ps -a
).
La imagen podría ser utilizada actualmente por un contenedor en ejecución, por lo que primero debe detener y retirar el (los) contenedor (es).
docker stop <container-name>
docker rm <container-id>
Entonces podrías intentar borrar la imagen:
docker rmi <image-id>
Debe asegurarse de que esta imagen no dependa de otras imágenes (de lo contrario, debe eliminarlas primero).
Tuve un caso extraño en el que no tenía más contenedores aún con vida ( docker ps -a
no devolvió nada) pero no pude eliminar la imagen y su dependencia de imagen.
Para resolver estos casos especiales, podría forzar la eliminación de la imagen con esto:
docker rmi -f <image-id>
La versión más compacta del comando para eliminar todas las imágenes sin etiquetar es:
docker rmi $(docker images | grep "^<none>" | awk ''{print $"3"}'')
Para borrar alguna imagen de Docker debes ejecutar el siguiente comando:
$ docker rmi <docker_image_id>
Por lo tanto, para eliminar todas las imágenes de Docker, puede ejecutar el siguiente comando:
$ docker rmi $(docker images -q)
Ahora, si desea eliminar todas las imágenes de Docker (incluidas las imágenes que están en uso), puede agregar la bandera -f, por ejemplo:
$ docker rmi -f $(docker images -q)
Primero debe detener / eliminar todos los contenedores innecesarios creados en esas imágenes.
Echa un vistazo: Cómo quitar los viejos contenedores Docker .
Después de eso use la solución @marcell.
Primero, quite todos los contenedores usando el siguiente comando
sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
Luego, elimine la imagen por su ID usando el siguiente comando
sudo docker rmi <image-id>
Si desea limpiar automáticamente / periódicamente los contenedores salidos y eliminar las imágenes y los volúmenes que no están siendo utilizados por un contenedor en ejecución, puede descargar esta imagen de deshielo / limpieza de la ventana acoplable.
De esa manera no necesitas ir a limpiarlo a mano.
Solo corre:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest
Se ejecutará cada 30 minutos (o por mucho tiempo que lo configure con la opción DELAY_TIME = 1800) y limpie los contenedores e imágenes salidos.
Más detalles: https://github.com/meltwater/docker-cleanup/blob/master/README.md
en bash
for i in `sudo docker images|grep /<none/>|awk ''{print $3}''`;do sudo docker rmi $i;done
Esto eliminará todas las imágenes con nombre "". Encontré esas imágenes redundantes.
simplemente puede agregar - forzar al final del comando. como: sudo docker rmi <docker_image_id> --force
Para hacerlo más inteligente puedes agregarlo como:
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
Aquí, en la docker ps
$ 1 está la 1ª columna, es decir, la identificación del contenedor de la ventana acoplable
y las docker images
$ 3 son la tercera columna, es decir, la identificación de la imagen de la ventana acoplable
Para borrar todas las imágenes, usa el comando dado.
docker rmi $(docker images -q)
Para borrar todos los contenedores, usa el comando dado.
docker rm $(docker ps -a -q)
Advertencia: Esto destruirá todas tus imágenes y contenedores. ¡No será posible restaurarlos!
Esta solución es proporcionada por Techoverflow.net .
Posible motivo: el motivo puede ser que esta imagen esté siendo utilizada actualmente por un contenedor en ejecución. En tal caso, puede enumerar los contenedores en ejecución, detener el contenedor relevante y luego eliminar la imagen:
docker ps
docker stop <containerid>
docker rm <containerid>
docker rmi <imageid>
Si no puede encontrar el contenedor por la ventana acoplable ps, puede usar esto para enumerar todos los contenedores ya existentes y eliminarlos.
docker ps -a | grep 60afe4036d97
docker rm <containerid>
Nota: Tenga cuidado de eliminar todos los contenedores salidos a la vez en caso de que use contenedores de Volume-Only
. Estos permanecen en estado de Exit
, pero contienen datos útiles .
Quitar todos los contenedores
docker ps -q -a | xargs docker rm
Fuerza Eliminar todas las imágenes de la ventana acoplable.
docker rmi -f $(docker images -f dangling=true -q)
docker image prune -all
o
docker image prune -a
Eliminar todas las imágenes colgantes. Si se especifica -a, también se eliminarán todas las imágenes a las que no haga referencia ningún contenedor.
Nota: se le pedirá una confirmación antes de que la ciruela elimine algo, pero no se le muestra una lista de lo que posiblemente se eliminará. Además, la imagen de la ventana acoplable ls no admite el filtrado negativo, por lo que es difícil predecir qué imágenes se eliminarán realmente.
como se indica en la documentación de Docker para la poda.
https://docs.docker.com/engine/reference/commandline/image_prune/