gestion-imagenes-docker

Gestión de Imágenes de Docker

  • 4 min

El ciclo de vida de una imagen en Docker abarca las operaciones necesarias para obtener, auditar y eliminar estas plantillas inmutables.

Hasta ahora, Docker ha sido muy amable con nosotros. Cuando ejecutamos docker run hello-world, él solo se encargó de buscar la imagen, descargarla y ejecutarla.

Esto está muy bien, pero para mantener nuestra máquina limpia también necesitamos saber cómo gestionar y controlar las imágenes qué descargamos y qué mantenemos en nuestro disco duro.

ComandoDescripción
docker pull <nombre_imagen>Descarga una imagen desde un repositorio (Docker Hub).
docker imagesLista todas las imágenes locales.
docker rmi <imagen_id>Elimina una o más imágenes.
docker tag <imagen_id> <nuevo_nombre>Etiqueta una imagen con un nuevo nombre.
docker save -o <archivo.tar> <nombre_imagen>Guarda una imagen en un archivo tar.
docker load -i <archivo.tar>Carga una imagen desde un archivo tar.

Playground

Aquí puedes jugar con los distintos comandos y ver su efecto, sin miedo a llenar el disco duro de tu ordenador 😉

Ahora veremos los comandos principales en profundidad: Descargar (pull), Listar (images) y Borrar (rmi) 👇.

Descargar imágenes (docker pull)

Aunque docker run descarga la imagen si no la tiene, a veces queremos descargarla antes de ejecutarla.

¿Por qué querríamos hacer esto?

  • Para adelantar tiempo (pre-fetching) antes de una demo o despliegue.
  • Para asegurarnos de tener la última versión actualizada.

El comando es sencillo:

docker pull <nombre_imagen>:<tag>
Copied!

Por ejemplo, para bajarnos la última versión de Ubuntu:

docker pull ubuntu
Copied!

O si queremos una versión específica (algo vital en producción), usamos el tag:

docker pull python:3.9-alpine
Copied!

Si no especificas el tag (lo que va después de los dos puntos), Docker asume por defecto que quieres la etiqueta . Es decir, docker pull ubuntu es igual a docker pull ubuntu:latest.

Listar imágenes (docker images)

Bien, nos hemos bajado cosas. ¿Pero qué tengo exactamente en mi ordenador ocupando espacio? Para ver tu “inventario” local, usamos:

docker images
Copied!

También puedes usar la sintaxis más moderna docker image ls

Verás una tabla como esta:

REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         latest    605c77e624dd   2 months ago    141MB
ubuntu        20.04     d5ca7a445605   5 months ago    72.8MB
hello-world   latest    feb5d9fea6a5   6 months ago    13.3kB
Copied!
  • REPOSITORY: El nombre de la imagen (ej: nginx).
  • TAG: La versión específica (ej: latest, 20.04).
  • IMAGE ID: El ID único de esa imagen. Es un hash (SHA256) acortado. Nos servirá para referirnos a ella inequívocamente.
  • SIZE: Cuánto ocupa en tu disco.

Borrar imágenes (docker rmi)

Llegamos al punto crítico. Has estado probando cosas y ahora tienes 15GB de imágenes que no usas. Toca limpiar.

El comando para borrar una imagen es docker rmi (ReMove Image).

Regla mnemotécnica:

  • rm = Remove (para contenedores).
  • rmi = Remove Image (para imágenes).

Podemos borrar por nombre o por ID:

docker rmi nginx
# O usando el ID
docker rmi 605c77e624dd
Copied!

Limpieza general (prune)

A veces tenemos decenas de imágenes viejas, versiones dangling (que aparecen como <none>) y basura digital. Ir una a una es un peñazo.

Docker tiene un comando para “tirar la basura”:

docker image prune
Copied!

Esto borrará todas las imágenes “colgantes” (aquellas que no tienen nombre ni tag y no sirven para nada).

Si te sientes valiente y quieres borrar TODAS las imágenes que no estén siendo usadas por un contenedor activo en este momento (cuidado, que es posible que borres cosas que quizás querías guardar):

docker image prune -a
Copied!