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 trato de eliminar 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?
docker images -q | %{docker rmi -f $_}
sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
docker ps -a -q | %{docker rm -f $_}
docker system prune
. Por lo tanto, para borrar todo:docker kill $(docker ps -q)
para detener los contenedores seguidos de a,docker system prune -a
se eliminará todo - vea stackoverflow.com/a/44309011/247708Posible motivo: el motivo puede ser que esta imagen sea 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:
Si no puede encontrar el contenedor por docker ps, puede usar esto para enumerar todos los contenedores ya salidos y eliminarlos.
Nota: Tenga cuidado de eliminar todos los contenedores salidos a la vez en caso de que use
Volume-Only
contenedores. Estos permanecen enExit
estado, pero contienen datos útiles .fuente
sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm
(gracias a github.com/dotcloud/docker/issues/3258 ) y luego consudo docker rmi 70c0e19168cf
Exit
estado. Si está utilizando contenedores de solo volumen de datos, no se mantienen en ejecución.awk '/Exit/ {print $1}'
Error response from daemon: No such container: ...
. Es difícil saber qué se debe reemplazar y con qué debo reemplazarlo. No use...
La razón 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
exited
estado. Por lo tanto, debe asegurarse de haber detenido y eliminado todos los contenedores creados en esas imágenes. El siguiente comando lo ayuda a eliminar todos los contenedores que no se están ejecutando:Ahora esto elimina todas las
<none>
imágenes colgantes no intermedias :fuente
La imagen podría ser utilizada actualmente por un contenedor en ejecución, por lo que primero debe detener y eliminar los contenedores.
Entonces podrías intentar eliminar la imagen:
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 vivos (
docker ps -a
no devolvió nada) pero no pude eliminar la imagen y su dependencia de la imagen.Para resolver estos casos especiales, puede forzar la eliminación de la imagen con esto:
fuente
En Bash:
Esto eliminará todas las imágenes con el nombre "<ninguno>". Encontré esas imágenes redundantes.
fuente
docker images|grep \<none\>|awk '{print $3}' | xargs docker rmi
, puede necesitarsudo
permisoEncontré la respuesta en este comando:
Tuve tu problema cuando borré algunas imágenes que estaban siendo utilizadas, y no me di cuenta (usando
docker ps -a
).fuente
Desde Docker ver. 1.13.0 (enero de 2017) está el
system prune
comando:fuente
Además de la respuesta de Sunny:
Para eliminar todas las imágenes en una máquina Windows (con Docker para Windows) en una ventana de PowerShell, haga lo siguiente:
Para eliminar todos los contenedores en una máquina Windows (con Docker para Windows) en una ventana de PowerShell, haga lo siguiente:
fuente
Primero, elimine todos los contenedores con el siguiente comando
Luego, elimine la imagen por su ID con el siguiente comando
fuente
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.
fuente
Retire todos los contenedores
Forzar la eliminación de todas las imágenes de Docker
fuente
Simplemente puede agregar
--force
al final del comando. Me gusta:Para hacerlo más inteligente , puede agregar como:
Aquí en
docker ps
$ 1 está la primera columna, es decir, la ID del contenedor Docker.Y
docker images
$ 3 es la tercera columna, es decir, la ID de la imagen de Docker.fuente
La versión más compacta de un comando para eliminar todas las imágenes sin etiquetar es:
fuente
Para eliminar alguna imagen de Docker, debe ejecutar el siguiente comando:
Entonces, para eliminar todas las imágenes de Docker, puede ejecutar el siguiente comando:
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:fuente
Utilizar
o
Eliminar todas las imágenes colgantes. Si
-a
se especifica, también eliminará todas las imágenes a las que ningún contenedor haga referencia.Nota: Se le solicita confirmación antes de que la poda elimine algo, pero no se le muestra una lista de lo que se eliminará potencialmente. Además,
docker image 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 podar .
fuente
Si desea limpiar automáticamente / periódicamente los contenedores salidos y eliminar imágenes y volúmenes que no están en uso por un contenedor en ejecución, puede descargar la imagen de Docker
meltwater/docker-cleanup
.De esa manera no necesita ir a limpiarlo a mano.
Solo corre:
Se ejecutará cada 30 minutos (o durante el tiempo que lo configure con la opción DELAY_TIME = 1800) y limpiará los contenedores e imágenes salidos.
Más detalles: https://github.com/meltwater/docker-cleanup/blob/master/README.md
fuente
He encontrado una solución con el script Powershell que lo hará por mí.
El script al principio detiene todos los contenedores que elimina todos los contenedores y luego elimina las imágenes que son nombradas por el usuario.
Mire aquí http://www.devcode4.com/article/powershell-remove-docker-containers-and-images
fuente