🖼️ 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.

🚀 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:

Como vemos para instalarlo hacemos
docker pull hello-world
📌 Verificar imágenes descargadas
docker images

📌 Filtrar imágenes (ejemplo: buscar solo "hello-world")
docker images | grep hello-world

📌 Ejecutar la imagen
docker run hello-world

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. 🖥️
