estoy intentando
docker rmi c565603bc87f
Error:
Respuesta de error del daemon: conflicto: no se puede eliminar c565603bc87f (no se puede forzar) - la imagen tiene imágenes secundarias dependientes
Por lo tanto, no puedo eliminar la imagen incluso con la bandera -f. ¿Cómo eliminar la imagen entonces y todos sus elementos secundarios?
Versión de Linux y Docker:
uname -a Linux goracio-pc 4.4.0-24-generic # 43-Ubuntu SMP mié 8 de junio 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
versión de docker Cliente: Versión: 1.11.2 Versión de API: 1.23 Versión de Go: go1.5.4 Git commit: b9f10c9 Construido: mié 1 de junio 22:00:43 2016 OS / Arch: linux / amd64
Servidor: Versión: 1.11.2 Versión API: 1.23 Versión de Go: go1.5.4 Git commit: b9f10c9 Construido: mié 1 de junio 22:00:43 2016 OS / Arch: linux / amd64
fuente
Respuestas:
Debe intentar eliminar imágenes innecesarias antes de eliminar la imagen:
Después de eso, ejecuta:
fuente
prune
> "docker rmi" requires at least 1 argument.
--filter=dangling=true
. Si aún recibe ese error, eso solo significa que no tiene imágenes colgantes, y que el comando en el conjunto se evalúa como una cadena vacía.En algunos casos (como en mi caso) puede estar tratando de eliminar una imagen especificando la identificación de la imagen que tiene varias etiquetas que no se dan cuenta de que existen, algunas de las cuales pueden ser utilizadas por otras imágenes. En ese caso, es posible que no desee eliminar la imagen .
Si tiene un caso de etiquetas redundantes como se describe aquí, en lugar de
docker rmi <image_id>
usardocker rmi <repo:tag>
en la etiqueta redundante que desea eliminar.fuente
docker rmi <repo:tag>
funcionó para mí. Su solución es bastante simple entre esas respuestas, gracias.Untagged: drud/ddev-webserver:20200301_leymannx_apache-junk-built
repo:tag
porque crea ocho imágenes etiquetadas que comparten solo dos ID de imágenes. Incluso Visual Studio no los eliminará en su ventana de administración de contenedores ...docker rmi <repo:tag>
solo desenchufa , no necesariamente elimina una imagen. Si hay más de una etiqueta que hace referencia a esta imagen, o si hay otro problema como, por ejemplo, el indicado por el OP, la imagen seguirá ahí. Puede verificar que la imagen todavía existe con el comandodocker images ls --all
.todas las respuestas anteriores son correctas, pero aquí hay una solución que es simplemente eliminar todas sus imágenes a la fuerza ( use este comando bajo su propio riesgo, eliminará todas sus imágenes )
fuente
docker image rm $(docker image ls -a -q) -f
encuentre la identificación de la imagen y la identificación principal para todas las imágenes creadas después de la imagen en cuestión con lo siguiente:
Entonces llamas al comando:
"sub_image_id" es la ID de la imagen dependiente
fuente
Lo que me funcionó fue usar la combinación REPOSITORY: TAG en lugar de la ID DE IMAGEN.
Cuando intenté eliminar una imagen acoplable con el comando
docker rmi <IMAGE ID>
sin contenedores asociados con esta imagen, recibí el mensaje:Pude eliminar con éxito cuando utilicé el comando
docker rmi RPOSITORY:TAG
fuente
docker rmi 93fd78260bd1
falló, pero luegodocker tag 93fd78260bd1 ubuntu:temp && docker rmi ubuntu:temp
tuvo éxito.Untagged: ubuntu:18.04v1
). Si lo hacedocker images -a
, probablemente verá3f66bec2c6bf
todavía en la lista. Si la imagen fuera realmente eliminada, recibirías el mensajeDeleted: 3f66bec2c6bf
ESTE COMANDO QUITA TODAS LAS IMÁGENES (USAR CON PRECAUCIÓN)
¿Has intentado usar --force
Este código anterior se ejecuta como un encanto, incluso si tuve el mismo problema
fuente
La respuesta aquí es encontrar a todos los hijos descendientes, que tiene una respuesta aquí:
docker, ¿cómo puedo obtener la lista de imágenes de niños dependientes?
Luego, use eso para eliminar las imágenes secundarias en orden.
fuente
Aquí hay un script para eliminar una imagen y todas las imágenes que dependen de ella.
fuente
Después de eso, use el comando como sugirió Nguyen.
fuente
Sobre la base del método de fuerza bruta de Simon Brady aquí , si no tiene un montón de imágenes, puede usar esta función de shell:
y luego llámalo usando
recursive_remove_image <image-id>
.fuente
Ex:
fuente
Cuando quiero eliminar alguna imagen no utilizada con nombre
"<none>"
en la ventana acoplable, me enfrento con el problemaunable to delete a354bbc7c9b7 (cannot be forced) - image has dependent child images
. Entonces, para resolver este problema:puedes ver que tengo varias imágenes con el nombre javaapp: nombre del contenedor más reciente y diferente. Entonces, eliminé y eliminé todos los contenedores de "javaapp: latest" con:
Luego
Entonces puedo eliminar todas las imágenes con nombre
"<none>"
buena suerte
fuente
También recibí este problema, pude resolver el problema con los siguientes comandos. esto puede ser causa, el contenedor de la imagen se está ejecutando o salir, por lo que antes de eliminar la imagen, debe eliminar el contenedor
docker ps -a -f status = exited: este comando muestra todos los contenedores salidos, así que copie el ID del contenedor y luego ejecute los siguientes comandos para eliminar el contenedor
docker rm #containerId: este comando eliminar contenedor puede ser un problema que menciona "la imagen tiene imágenes secundarias dependientes"
Luego intente eliminar la imagen con el siguiente comando
docker rmi #ImageId
fuente
Tuve este problema y ninguna de las respuestas cortas aquí funcionó, incluso en la página mencionada por @tudor anteriormente. Pensé en compartir aquí cómo me deshice de las imágenes. Se me ocurrió la idea de que las imágenes dependientes deben ser> = el tamaño de la imagen principal, lo que ayuda a identificarla para que podamos eliminarla.
Enumeré las imágenes en orden de tamaño para ver si podía detectar alguna correlación:
Lo que esto hace es usar un formato especial de la ventana acoplable para colocar primero la columna de tamaño de imagen, luego ejecutar una ordenación legible por humanos en orden inverso. Luego restauro las columnas fáciles de leer.
Luego miré los
<none>
contenedores y emparejé el primero de la lista con un tamaño similar. Realicé un simpledocker rmi <image:tag>
en esa imagen y todas las<none>
imágenes del niño fueron con ella.La imagen del problema con todas las imágenes secundarias era en realidad la maldita
myrepo/getstarted-lab
imagen que usé cuando comencé a jugar con Docker. Fue porque había creado una nueva imagen a partir de la primera imagen de prueba que creó la cadena.Esperemos que eso ayude a alguien más en algún momento.
fuente
Supongamos que tenemos un Dockerfile
Creamos una imagen a partir de eso sin TAG ni nombres
Ahora tenemos un informe de éxito "Construido con éxito 57ca5ce94d04" Si vemos las imágenes de la ventana acoplable
Primero debemos eliminar el
docker rmi 57ca5ce94d04
Seguido por
Por esa imagen se eliminará!
Una eliminación forzada de todo según lo sugerido por alguien
fuente
Ampliando la respuesta proporcionada por @Nguyen: esta función se puede agregar a su
.bashrc
etc. y luego se puede llamar desde la línea de comandos para ayudar a limpiar cualquierimage has dependent child images
error ...Puede ejecutar la función como usted mismo, y si
docker ps
falla, ejecutará eldocker
comandosudo
y le pedirá su contraseña.¡ NO elimina imágenes de ningún contenedor en ejecución!
También tengo esto en mi
.bashrc
archivo ...Funciona con:
fuente
Forzar la eliminación de una lista de imágenes (excluya la versión 10, por ejemplo)
fuente
puedes hacer esto:
➜ ~ sudo ventana acoplable RMI 4ed13257bb55 -f Eliminado: sha256: 4ed13257bb5512b975b316ef482592482ca54018a7728ea1fc387e873a68c358 Eliminado: sha256: 4a478ca02e8d2336595dcbed9c4ce034cd15f01229733e7d93a83fbb3a9026d3 Eliminado: sha256: 96df41d1ce6065cf75d05873fb1f9ea9fed0ca86addcfcec7722200ed3484c69 Eliminado: sha256: d95efe864c7096c38757b80fddad12819fffd68ac3cc73333ebffaa42385fded
fuente
Capa de imagen: los repositorios a menudo se denominan imágenes o imágenes de contenedor, pero en realidad están formadas por una o más capas. Las capas de imagen en un repositorio están conectadas entre sí en una relación padre-hijo. Cada capa de imagen representa cambios entre sí y la capa principal.
El patrón de construcción del acoplador utiliza herencia . Significa que la versión
i
depende de la versióni-1
. Por lo tanto, debemos eliminar la versióni+1
para poder eliminarlai
. Esta es una dependencia simple.Si desea eliminar todas las imágenes excepto la última (la más actualizada) y la primera (base), entonces podemos exportar la última (la más actualizada) usando el
docker save
comando como se muestra a continuación.Entonces, ahora, elimine todas las imágenes usando image-id como se muestra a continuación.
Ahora, cargue su imagen tgz guardada como se muestra a continuación.
vea la imagen-id de su imagen cargada usando docker ps -q. No tiene etiqueta y nombre. Simplemente puede actualizar la etiqueta y el nombre como se hace a continuación.
fuente