# 2021-01-18 # 「Docker」 - Eliminar imagen

El contenido de esta nota incluye: cómo eliminar una imagen de Docker local; cómo eliminar una imagen de Docker remota; cómo lidiar con problemas comunes en el proceso de eliminación; también involucra algunos métodos de almacenamiento de imágenes de Docker.

Eliminar espejo remoto

Las réplicas en el almacén de réplicas (como Docker Hub) no pueden eliminarse mediante comandos en este momento y deben eliminarse en el almacén de réplicas. Complete la operación de eliminación haciendo clic en el botón, que no implica contenido particularmente complicado, así que simplemente omítalo.

# 08/08/2019 Hoy vi el comando rmi del registro de docker en Docker v19.03 (actual) , que puede eliminar la imagen del Registro. Actualmente es experimental.

Eliminar espejo local

Eliminar espejos únicos o múltiples

Use los comandos docker rmi y docker image rm para eliminar el espejo local (solo puede eliminar el espejo local, no el espejo en el almacén de espejos):

# Eliminar 
docker rmi fd484f19954f por ID de imagen 

# Los dos siguientes son equivalentes, porque la última es la etiqueta predeterminada 
docker rmi test1: latest 
docker rmi test1 

# También puede eliminarla a través de DIGEST. Entre REPOSITORY y DIGEST, use @ para separar. 
# Debido a que la imagen extraída por DIGEST no tiene una ETIQUETA, se utiliza este método. 
docker rmi prueba / busybox @ sha256: cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf

1) Si el espejo tiene varias etiquetas y la etiqueta se usa como parámetro de eliminación, el comando solo eliminará la etiqueta;
2) Si el espejo tiene una etiqueta única, el comando eliminará la etiqueta y luego eliminará el espejo;

Eliminar la imagen utilizada por el contenedor

Si la imagen tiene un contenedor en uso, no se puede eliminar. Debes usar la opción -f para eliminar el contenedor y la imagen:

Docker image rm --force "REPOSITORY: TAG"

Eliminar todos los espejos

Si desea eliminar todas las imágenes, puede usar el siguiente comando (puede usar la opción --filter de las imágenes de la ventana acoplable para el filtrado avanzado):

# Los siguientes dos comandos son equivalentes 
docker image rm $ (docker image ls -a -q) 
docker rmi $ (docker images -a -q) 

# Eliminar la imagen del contenedor 
docker image rm -f $ (docker image ls -a -q)

Eliminar todos los espejos con la misma ID de IMAGEN

Cuando la imagen tiene varias etiquetas, si usa la ID de IMAGEN para eliminar ( docker rmi fd484f19954f ), se generará el siguiente error:

Error: conflicto, no se puede eliminar la imagen fd484f19954f porque está etiquetada en varios repositorios, use -f para forzar 2013/12/11 05:47:16 Error: no se pudo eliminar una o más imágenes

Método 1: cuando se puede usar la opción -f en este momento, esto eliminará todas las etiquetas y eliminará el espejo:

docker rmi --force fd484f19954f

Método 2: use el comando grep para filtrar y use el resultado como el parámetro rmi de la ventana acoplable para eliminar.

Método 3: use el comando docker inspect, el campo RepoTags de la salida del comando mostrará las etiquetas relevantes para su eliminación.

Manejo de errores comunes

# imagen tiene imágenes secundarias dependientes

Encuentra las imágenes secundarias dependientes en Docker

Descripción del problema:
al eliminar un espejo ( docker rmi a990d6e2b083 ), aparece el siguiente error:

Respuesta de error del daemon: conflicto: no se puede eliminar d86795370e7b (no se puede forzar) - la imagen tiene imágenes secundarias dependientes

Causa del problema:
este error indica que el espejo eliminado tiene subduplicaciones dependientes.

Solución:

########################################### ############################# 
# Un enfoque simple 
############## ########################################### ############### 
imagen de la ventana acoplable inspeccionar --format = '{ 
    
    { 
    .Id}} {
     {.Parent}}' \ 
    $ (imagen de la ventana acoplable ls --todos --filtro desde = a990d6e2b083 -q) | grep a990d6e2b083 

# El comando anterior: 
# 1 (docker image ls) Busque el espejo 
# 2 después de a990d6e2b083 (docker image inspect) y luego obtenga el espejo padre de estos espejos 
# 3 (grep) Al filtrar el espejo padre, lo que se encuentra es Haga referencia a la subduplicación de este espejo. 

########################################### ############################## 
# Sin embargo, el problema nunca ha sido tan simple 
########## ########################################### #################### 
# El mayor problema es: todavía hay espejos secundarios, ¿búscalos lentamente? ? ?
# En realidad, lo que tienes que hacer es muy sencillo. Por lo general, este problema se debe a un espejo colgante que hace referencia al espejo, así que elimine todos los espejos "colgantes". 
# "Espejo 
colgante " puede eliminar de forma segura docker rmi $ (imágenes de docker --filter "colgando = verdadero" -q --no-trunc) 

################# ########################################### ########### 
# Sin embargo, el enfoque realmente correcto es este 
# Encuentra el espejo secundario del espejo secundario del espejo secundario que deseas eliminar ... (no más eliminaciones, no menos eliminaciones) 
# https://stackoverflow.com/questions/38118791/can-t-delete-docker-image-with-dependent-child-images/38119847#38119847#answer-53037893 
############## ########################################### ################# 
recursive_remove_image () { 
  for image in $ (docker images --quiet --filter "since = $ {1}") # Encuentra el espejo después de este espejo . Porque la subduplicación está después de esto. 
  do 
    if [$ (docker history --quiet $ {image} | grep $ {1})] # Verifique el historial de construcción de este espejo secundario y si contiene este espejo. Si es así, debería eliminarse.
    luego 
      recursive_remove_image "$ {image}" # Recursivamente, borre el sub-espejo al que se aplica este espejo. 
    fi 
  hecho 
  # ejecutar eliminar
  echo "Eliminando: $ {1}" 
  docker rmi -f $ {1} 
} 
recursive_remove_image "<id-image>"

referencias

 

 

Supongo que te gusta

Origin blog.csdn.net/u013670453/article/details/112773561
Recomendado
Clasificación