🖼️ Imágenes

🖼️ ¿Qué es una imagen en Docker?

Una imagen de Docker es una plantilla de solo lectura que se utiliza para lanzar contenedores.

🔹 Características principales:
Inmutable: Una vez creada, no se puede modificar.
Construida en capas: Cada imagen está formada por una serie de capas superpuestas.
Optimización mediante reutilización: Cuando se cambia una imagen (por ejemplo, al actualizar una aplicación), no se reconstruye toda la imagen, sino que se añade o actualiza solo la capa necesaria.
Almacenamiento eficiente: Docker no duplica capas ya existentes, lo que reduce el uso de espacio y la redundancia.

📌 ¿Cómo funcionan las capas en Docker?

Docker utiliza sistemas de archivos unidos (union file systems) para combinar múltiples capas en una sola imagen coherente.

🔹 Ejemplo de capas en una imagen:
1️⃣ Imagen base (ej. Ubuntu o Fedora).
2️⃣ Capa con las dependencias necesarias (ej. Apache, Python).
3️⃣ Capa con el código de la aplicación.
4️⃣ Capa con configuraciones personalizadas.

👉 Si instalamos una imagen de Ubuntu y luego una de WordPress (que usa Apache sobre Ubuntu), muchas capas del sistema operativo se reutilizan, reduciendo el tamaño y el tiempo de descarga.
Pasted image 20250331191850.png

🚀 Construcción de imágenes con Dockerfile

Las imágenes en Docker se crean a partir de un archivo llamado Dockerfile, que es un script con instrucciones secuenciales que definen cómo construir una imagen personalizada.

🔹 Cada instrucción en un Dockerfile genera una nueva capa.
🔹 El archivo debe llamarse Dockerfile (sin extensión).
🔹 Ejemplo de imagen personalizada:

FROM ubuntu:latest  # Imagen base que quiero que coja
RUN apt update && apt install -y apache2  # Instalación de Apache
COPY index.html /var/www/html/  # Agregamos un archivo HTML
CMD ["apachectl", "-D", "FOREGROUND"]  # Comando de inicio

🧱 Instrucciones básicas en un Dockerfile

Instrucción Descripción Ejemplo
FROM Define la imagen base del contenedor. FROM ubuntu:22.04
RUN Ejecuta comandos dentro del contenedor (en tiempo de construcción). RUN apt update && apt install -y apache2
COPY Copia archivos/directorios al contenedor. COPY index.html /var/www/html/
WORKDIR Define el directorio de trabajo dentro del contenedor. WORKDIR /app
CMD Comando por defecto que se ejecuta al iniciar el contenedor. CMD ["apachectl", "-D", "FOREGROUND"]
EXPOSE Indica qué puerto se debe exponer (solo informativo). EXPOSE 80

Para construir una imagen a partir de un Dockerfile, usa:

docker build --tag <nombre_de_la_imagen> <ruta_dockerfile>
docker build --tag mi_imagen .

🔍 . indica que el Dockerfile está en el directorio actual.

📦 Ejemplo de Dockerfile sencillo

FROM ubuntu:22.04
WORKDIR /
RUN touch helloworld.txt
docker build -t helloworld .

🌐 Dockerfile con servidor web Apache

FROM ubuntu:22.04
RUN apt-get update -y && \
    apt-get install apache2 -y && \
    apt-get clean
COPY index.html /var/www/html/
EXPOSE 80
CMD ["apache2ctl", "-D", "FOREGROUND"]

🧠 Consejos para optimizar tu Dockerfile
Reduce capas: combina varios comandos RUN en una sola línea.

docker build -t webserver .

🌍 Distribución de imágenes

Por defecto, Docker obtiene las imágenes base del Docker Hub, el repositorio oficial de imágenes públicas. También puedes:
✔ Crear imágenes personalizadas y reutilizarlas en diferentes proyectos.
✔ Subirlas a Docker Hub o a un registro privado.
✔ Compartir imágenes entre equipos de desarrollo.

📌 Conclusión: Las imágenes Docker permiten construir aplicaciones portables, optimizando el almacenamiento y facilitando el despliegue de manera rápida y eficiente. 🚀

📥 Ejemplo práctico: Descargar e iniciar una imagen Docker

Por ejemplo, si queremos descargar la imagen hello-worl desde Docker Hub:
Pasted image 20250331192714.png
Como vemos para instalarlo hacemos

docker pull hello-world

📌 Verificar imágenes descargadas

docker images 

Pasted image 20250331193117.png
📌 Filtrar imágenes (ejemplo: buscar solo "hello-world")

docker images | grep hello-world

Pasted image 20250331193239.png
📌 Ejecutar la imagen

docker run hello-world

Pasted image 20250331193455.png

Descargar la misma imagen con

🗑️ Eliminar imágenes en Docker

Para eliminar una imagen en Docker, primero debemos asegurarnos de que no haya contenedores en ejecución basados en esa imagen.

📌 Pasos para eliminar una imagen (ejemplo con kdenlive)

1️⃣ Ver la lista de imágenes disponibles:

docker images

2️⃣ Eliminar la imagen utilizando su ID o nombre:

docker rmi <ID_IMAGEN>  

o

docker rmi kdenlive

💡 Nota: Si la imagen está en uso por algún contenedor, primero debes eliminar ese contenedor con:

docker rm <ID_CONTENEDOR>

🔍 Buscar y descargar imágenes desde la terminal

Puedes buscar imágenes en Docker Hub directamente desde la terminal sin necesidad de acceder a la web.

📌 Buscar imágenes disponibles (ejemplo: Ubuntu)

docker search ubuntu

📌 Descargar una imagen específica

docker pull ubuntu

📌 Ver imágenes descargadas en el sistema

docker images

🚀 Ejecutar una imagen en Docker

Para ejecutar una imagen descargada, usa el siguiente comando:

docker run ubuntu

También puedes ejecutar la imagen con un comando específico al mismo tiempo:

docker run -it ubuntu bash

Esto iniciará un contenedor con Ubuntu y abrirá la terminal bash dentro del mismo. 🖥️
Pasted image 20250331195321.png