la imagen está siendo utilizada por el contenedor detenido

93

Estoy tratando de eliminar un contenedor de la ventana acoplable con este comando:

docker rmi <Image-Id>

Obviamente, he reemplazado el Image-Id por el Id que consigo usando:

docker images

Pero veo el error a continuación:

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

Respuestas:

121

También puede usar --force , -fForzar eliminación de la imagen

Si usa la marca -f y especifica el ID corto o largo de la imagen, este comando desetiqueta y elimina todas las imágenes que coinciden con el ID especificado.

  docker rmi -f <image_id> 
Adiii
fuente
1
Gracias, funcionó bien pero hay un problema. Eliminé una imagen de 10 GB, pero después de eliminarla, no veo ningún cambio en el espacio libre en mi disco.
Mehrdad Babaki
1
¿eliminó los volúmenes adjuntos con la imagen y
verificó el
1
Realmente no, soy nuevo en Docker. Probaré la herramienta Por cierto, ¿puedo usar la línea de comando para detectar el volumen y eliminarlos?
Mehrdad Babaki
1
sí docker volume ls; para enumerar el volumen y eliminarlo, docker volume rm v_id
Adiii
40

Debe eliminar el contenedor detenido con docker rmy luego puede eliminar la imagen que usa con docker rmi.

David Maze
fuente
3
Esto es parte de cualquier respuesta completa. Puede forzar la eliminación o eliminar la imagen detenida.
bmacnaughton
28

También puede encontrar que ha detenido los contenedores que están causando el bloqueo. Elimínelos primero usando:

docker rm  $(docker ps -q -a)

Aquí enumeramos los procesos de la ventana acoplable solo con el ID y luego los eliminamos; sin embargo, docker rm solo eliminará los contenedores detenidos.

Luego regrese y elimine las imágenes usando:

docker image rm <image_id>
Angus
fuente
21

Primero debe retirar el contenedor.
Forzado es el último método a tomar.

#check container
docker ps -a

#remove container
docker rm containerID
Hideyasu.T
fuente
3
Claramente la mejor respuesta. El único que explica cómo obtener la lista de contenedores detenidos.
Marco
4

En caso de docker rmi <image-id>que no funcione, intente esto:

Detener todos los contenedores en ejecución

docker stop $(docker ps -aq)

Retire todos los contenedores

docker rm $(docker ps -aq)

Eliminar todas las imágenes

docker rmi $(docker images -q)
arilwan
fuente
3

Además de las otras respuestas, tuve el mismo problema al usar Docker para Mac pero docker ps -ano mostraba ningún contenedor en ejecución. Ejecución de docker imagesespectáculos:

docker/desktop-storage-provisioner   v1.0                605a0f683b7b        2 months ago        33.1MB
k8s.gcr.io/kube-controller-manager   v1.15.5             1399a72fa1a9        6 months ago        159MB
k8s.gcr.io/kube-proxy                v1.15.5             cbd7f21fec99        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.5             e534b1952a0d        6 months ago        207MB
k8s.gcr.io/kube-scheduler            v1.15.5             fab2dded59dd        6 months ago        81.1MB
docker/kube-compose-controller       v0.4.23             a8c3d87a58e7        11 months ago       35.3MB
docker/kube-compose-api-server       v0.4.23             f3591b2cb223        11 months ago       49.9MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        16 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        17 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

Todas estas imágenes son utilizadas por la aplicación Docker si tiene Kubernetes habilitado. En las preferencias de Docker para Mac, hay una sección para Kubernetes. Si hace clic en "Mostrar contenedores del sistema (avanzado)", aparecerán en formato docker ps.

Si desea eliminar estas imágenes, debe desactivar Kubernetes a través de la aplicación Docker para Mac y volver a intentarlo.

Eric
fuente
2

Los contenedores de Docker se ejecutan sobre las imágenes de Docker, puede eliminar una imagen solo si no está adjunta a ningún contenedor. Por lo tanto, debe detener el contenedor y eliminar el contenedor, luego puede eliminar la identificación de la imagen.

docker stop container-id y docker rm container-id

A continuación, intente eliminar image docker rmi image-id

Alguna información adicional dada en el siguiente enlace. Salud.!

https://docs.docker.com/config/pruning/

surya kiran
fuente
Esta debería ser la respuesta correcta después del proceso de detener contenedor (docker-compose stop) -> eliminar contenedor (docker rm <nombre del contenedor>) -> eliminar imágenes asociadas (docker rmi <image_id>).
kta
1

Si el objetivo es recuperar espacio en disco, se puede utilizar otro enfoque que aún no se ha mencionado docker system prune. Imprimirá una advertencia que debe ser atendida:

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Esto no eliminará las imágenes con nombre, pero eliminará las imágenes intermedias sin nombre. Dependiendo del tamaño de los contenedores que esté utilizando, esto puede ahorrar una cantidad considerable de espacio en disco.

Eduardo
fuente
0

Si ha cambiado en Dockerfiley si está usando la ventana acoplable compose, ¡puede simplemente reconstruir su imagen ejecutándola docker-compose con la --buildopción!

ans1genie
fuente
Si realizó algún cambio en el, Dockerfileno debe eliminar la imagen usted mismo, solo use la bandera --buildcon docker-composepara que reconstruya una nueva imagen con los cambios
ans1genie