Title: Dockerfiles y creación de imágenes personalizadas
Course: 2025 - LISI - Virtualizacion 2-2 > Section: Desarrollo y Orquestación con Docker

🧱 Tema: Dockerfile y Creación de Imágenes Personalizadas

🎯 Objetivo

Aprender a construir imágenes personalizadas de contenedores Docker utilizando archivos Dockerfile, aplicando buenas prácticas para optimizar el rendimiento y la seguridad de las aplicaciones.

🧑‍🏫 1. Introducción a Dockerfile

Un Dockerfile es un archivo de texto que contiene instrucciones para construir una imagen Docker. Cada instrucción representa una capa en la imagen, lo que permite reutilización y eficiencia.

📌 Ejemplo básico:

# Imagen base

FROM python:3.10-slim

# Establecer directorio de trabajo

WORKDIR /app

# Copiar archivos al contenedor

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

# Exponer puerto

EXPOSE 5000

# Comando de inicio

CMD ["python", "app.py"]

🧩 2. Principales Instrucciones del Dockerfile

Instrucción | Descripción
FROM | Define la imagen base
RUN | Ejecuta comandos durante la construcción
COPY / ADD | Copia archivos al contenedor
WORKDIR | Define el directorio de trabajo
CMD / ENTRYPOINT | Comando que se ejecuta al iniciar el contenedor
EXPOSE | Indica el puerto que usará el contenedor
ENV | Define variables de entorno

🛠️ 3. Actividad Práctica Guiada

🧪 Objetivo:

Construir una imagen personalizada de una aplicación web en Flask.

📁 Estructura del proyecto:

flask-app/
│
├── app.py
├── requirements.txt
└── Dockerfile


📄 Contenido de requirements.txt:

flask


📄 Contenido de app.py:

from flask import Flask

app = Flask(__name__)

@app.route('/')

def home():

    return "¡Hola desde Docker!"

if __name__ == '__main__':

    app.run(host='0.0.0.0', port=5000)

📄 Dockerfile:

FROM python:3.10-slim

WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY . .

EXPOSE 5000

CMD ["python", "app.py"]

🧪 Comandos para construir y ejecutar:

docker build -t flask-app .

docker run -p 5000:5000 flask-app

✅ 4. Buenas Prácticas

- Usa imágenes base ligeras (alpine, slim)
- Minimiza el número de capas
- Evita instalar paquetes innecesarios
- Usa .dockerignore para excluir archivos no requeridos
- Versiona el Dockerfile con Git

📚 Recursos Complementarios

- Documentación oficial de Dockerfile
- Curso gratuito en Docker Labs
- Ejemplos en Awesome Docker