Gestión de imágenes Docker
1. ¿Qué es una imagen Docker? #
Antes de ejecutar un contenedor necesitamos una imagen.
Una imagen Docker es una plantilla que contiene todo lo necesario para crear un contenedor.
Por ejemplo:
1hello-world 2ubuntu 3debian 4nginx 5mysql 6postgres
Las imágenes pueden descargarse desde repositorios como Docker Hub.
En este bloque vamos a aprender a:
1docker pull 2docker images 3docker tag 4docker rmi
2. Descargar una imagen: docker pull #
El comando:
1docker pull
permite descargar una imagen desde un repositorio.
La sintaxis general es:
1docker pull <nombre_imagen>
Por ejemplo:
1docker pull nginx
Docker buscará la imagen de Nginx en Docker Hub y la descargará a nuestro equipo.
3. Primera imagen: hello-world #
Vamos a descargar una de las imágenes más sencillas de Docker:
1docker pull hello-world
Esta imagen se utiliza habitualmente para comprobar que Docker funciona correctamente.
Ejecutamos:
1docker pull hello-world
Docker comenzará la descarga.
Podremos ver una salida similar a:
1Using default tag: latest 2latest: Pulling from library/hello-world 3... 4Status: Downloaded newer image for hello-world:latest
La imagen queda almacenada en nuestro equipo.
¿Qué significa latest? #
Cuando escribimos:
1docker pull hello-world
Docker utiliza normalmente el tag:
1latest
Por tanto:
1docker pull hello-world
equivale a:
1docker pull hello-world:latest
4. Descargar una versión concreta #
También podemos indicar una versión determinada de una imagen.
La sintaxis es:
1docker pull imagen:tag
Por ejemplo:
1docker pull ubuntu:24.04
Aquí:
1ubuntu
es el nombre de la imagen.
Y:
124.04
es el tag.
Otro ejemplo #
Podríamos descargar una versión concreta de Debian:
1docker pull debian:12
Así podemos tener instaladas varias versiones de una misma imagen.
Por ejemplo:
1ubuntu:22.04 2ubuntu:24.04
5. Ver las imágenes descargadas: docker images #
Para ver las imágenes almacenadas en nuestro equipo utilizamos:
1docker images
Por ejemplo:
1docker images
Podremos obtener una tabla similar a:
1REPOSITORY TAG IMAGE ID CREATED SIZE 2hello-world latest 74cc54e27dc4 ... ... 3ubuntu 24.04 a04dc4851cbc ... ... 4nginx latest 1e5f3c5b981a ... ...
6. Información mostrada por docker images #
El comando:
1docker images
muestra varias columnas importantes.
REPOSITORY #
Nombre de la imagen.
Por ejemplo:
1ubuntu
TAG #
Versión o etiqueta de la imagen.
Por ejemplo:
124.04
o:
1latest
IMAGE ID #
Identificador único de la imagen.
Por ejemplo:
1a04dc4851cbc
Este identificador nos permitirá realizar operaciones sobre la imagen.
CREATED #
Indica cuándo fue creada la imagen.
SIZE #
Tamaño que ocupa la imagen.
7. Ejemplo completo #
Primero descargamos:
1docker pull hello-world
Después comprobamos que existe:
1docker images
Deberíamos encontrar una línea similar a:
1hello-world latest ...
8. Ejercicio: descargar varias imágenes #
Descarga las siguientes imágenes:
1docker pull hello-world
1docker pull ubuntu
1docker pull debian
Después comprueba las imágenes existentes:
1docker images
9. Etiquetas o tags #
Las imágenes Docker pueden tener una o varias etiquetas.
Estas etiquetas permiten:
- Identificar versiones.
- Organizar nuestras imágenes.
- Preparar una imagen para publicarla.
- Dar un nombre más cómodo a una imagen.
Por ejemplo:
1ubuntu:24.04
Tiene:
1Imagen: ubuntu 2Tag: 24.04
10. Crear una etiqueta: docker tag #
El comando:
1docker tag
permite crear una nueva referencia o etiqueta para una imagen que ya tenemos.
La sintaxis general es:
1docker tag <imagen_origen> <nuevo_nombre>:<tag>
También podemos utilizar el IMAGE ID:
1docker tag <IMAGE_ID> <nuevo_nombre>:<tag>
11. Ejemplo con hello-world #
Primero comprobamos nuestras imágenes:
1docker images
Supongamos que tenemos:
1REPOSITORY TAG IMAGE ID 2hello-world latest 74cc54e27dc4
Podemos crear una nueva etiqueta:
1docker tag hello-world:latest hola-mundo:prueba
También podríamos utilizar el ID:
1docker tag 74cc54e27dc4 hola-mundo:prueba
Ahora ejecutamos:
1docker images
Podremos encontrar algo similar a:
1REPOSITORY TAG IMAGE ID 2hello-world latest 74cc54e27dc4 3hola-mundo prueba 74cc54e27dc4
12. ¿Se ha duplicado la imagen? #
No.
Al ejecutar:
1docker tag hello-world:latest hola-mundo:prueba
no estamos copiando físicamente toda la imagen.
Simplemente estamos creando otra referencia a la misma imagen.
Podemos comprobarlo porque ambas muestran el mismo:
1IMAGE ID
Por ejemplo:
1hello-world:latest → 74cc54e27dc4 2 3hola-mundo:prueba → 74cc54e27dc4
13. ¿Para qué sirve docker tag? #
docker tag es especialmente útil para:
Crear versiones #
1docker tag miapp miapp:v1
Crear otro nombre #
1docker tag hello-world hola-mundo:prueba
Preparar imágenes para Docker Hub #
Por ejemplo:
1docker tag miapp usuario/miapp:v1
Esto lo veremos más adelante cuando publiquemos imágenes en Docker Hub.
14. Eliminar una imagen: docker rmi #
Para eliminar una imagen utilizamos:
1docker rmi
La sintaxis básica es:
1docker rmi <imagen>
Podemos indicar:
1nombre 2nombre:tag 3IMAGE ID
15. Eliminar una etiqueta #
Siguiendo el ejemplo anterior tenemos:
1hello-world:latest 2hola-mundo:prueba
Ambas apuntan a la misma imagen.
Podemos eliminar la etiqueta creada:
1docker rmi hola-mundo:prueba
Docker puede mostrar:
1Untagged: hola-mundo:prueba
Esto indica que se ha eliminado esa referencia.
Si ejecutamos:
1docker images
seguirá existiendo:
1hello-world:latest
16. Eliminar completamente una imagen #
Podemos eliminar una imagen utilizando:
1docker rmi hello-world
También podríamos utilizar su IMAGE ID:
1docker rmi 74cc54e27dc4
17. ¿Qué ocurre si la imagen está siendo utilizada? #
Docker puede impedirnos eliminar una imagen si existen contenedores que dependen de ella.
Por ejemplo, podríamos recibir un mensaje indicando un conflicto.
Esto ocurre porque existe una relación:
1IMAGEN 2 ↓ 3CONTENEDOR
Antes de eliminar determinadas imágenes puede ser necesario borrar primero los contenedores asociados.
La eliminación de contenedores se verá en el siguiente bloque.
18. Forzar la eliminación #
Existe la opción:
1docker rmi -f <imagen>
Por ejemplo:
1docker rmi -f hello-world
La opción:
1-f
significa:
1--force
Es decir, fuerza la operación.
Debe utilizarse con cuidado.
19. Diferencia entre docker rm y docker rmi #
Es importante no confundir estos dos comandos.
docker rmi #
Elimina:
1IMÁGENES
Ejemplo:
1docker rmi ubuntu
docker rm #
Elimina:
1CONTENEDORES
Ejemplo:
1docker rm mi-contenedor
docker rm lo veremos con más detalle en el bloque siguiente.
Una forma sencilla de recordarlo:
1rmi → remove image 2rm → remove container