Docker Containerization explicado simplemente (con diagramas y código real)
Docker Containerization : lo esencial en un artículo — código real, diagramas y pasos concretos, extractos de un curso de 41 lecciones.
Un guía que va al grano: Docker Containerization desglosada con diagramas, ejemplos concretos y comandos probados. Todo proviene de un curso estructurado de 12 capítulos — aquí tienes lo mejor.
- Instalar una VM UBUNTU
- Descubrir docker
- Comandos esenciales
- Dockerfile
- Containerizar Flask
Anatomía de un Dockerfile
# Arrêter TOUS les conteneurs en cours docker stop $(docker ps -a -q) # Supprimer TOUS les conteneurs docker rm $(docker ps -a -q) # Supprimer TOUTES les images (optionnel) docker rmi $(docker images -q) # Forcer la suppression si une image résiste docker rmi -f $(docker images -q)
-f (force) elimina incluso las imágenes usadas por contenedores.Objetivos pedagógicos
¿Qué es un Dockerfile?
Un Dockerfile es un archivo de texto que contiene una serie de instrucciones para construir una imagen Docker. Es como una receta de cocina: cada instrucción es un paso que transforma la imagen base en tu imagen personalizada.
- FROM = Los ingredientes base (la harina, la mantequilla...)
- WORKDIR = El plano de trabajo (la mesa de cocina)
- COPY = Añadir ingredientes (el azúcar, los huevos...)
- RUN = Preparar (mezclar, cocinar...)
- EXPOSE = Indicar la presentación (el plato de servicio)
- CMD = Servir el plato (el comando final)
Imagen base
El Dockerfile siempre parte de una imagen existente (FROM). Nunca se empieza desde cero.
Instrucciones
Cada línea es una instrucción que modifica la imagen: copiar archivos, instalar paquetes, configurar...
Imagen final
El resultado es una imagen personalizada lista para lanzarse con docker run.
Las instrucciones principales
FROM – Imagen base
Primera instrucción de un Dockerfile. Define la imagen de partida sobre la que se construye.
FROM python:3.11-slim
slim (versión ligera, sin herramientas innecesarias). Esto nos da un sistema Linux con Python 3.11 ya instalado.WORKDIR – Carpeta de trabajo
Define el directorio de trabajo dentro del contenedor. Todas las instrucciones siguientes (COPY, RUN, CMD) se ejecutarán en esta carpeta.
WORKDIR /app
WORKDIR en lugar de RUN cd /app. WORKDIR crea la carpeta automáticamente si no existe y persiste para todas las instrucciones siguientes.COPY – Copiar archivos
Copia archivos desde tu máquina (el «contexto de build») hacia el contenedor.
COPY . .
El primer . = la carpeta actual en tu máquina. El segundo . = el WORKDIR dentro del contenedor (/app).
Layers, caché y buenas prácticas
# Arrêter TOUS les conteneurs en cours docker stop $(docker ps -a -q) # Supprimer TOUS les conteneurs docker rm $(docker ps -a -q) # Supprimer TOUTES les images (optionnel) docker rmi $(docker images -q) # Forcer la suppression si une image résiste docker rmi -f $(docker images -q)
-f (force) elimina incluso las imágenes usadas por contenedores.Objetivos pedagógicos
Cada instrucción = 1 layer
Cuando Docker ejecuta un Dockerfile, cada instrucción (FROM, RUN, COPY, etc.) crea un nuevo layer (capa). Una imagen Docker es una pila de layers apilados unos sobre otros.
FROM python:3.11-slim ← Layer 1 (image de base) WORKDIR /app ← Layer 2 COPY requirements.txt . ← Layer 3 RUN pip install ... ← Layer 4 COPY . . ← Layer 5 CMD ["python", "app.py"] ← Layer 6 (métadonnées)
- Compartir los layers comunes entre varias imágenes (ej: todas las imágenes Python comparten el mismo layer base)
- Almacenar en caché los layers para acelerar los builds
- Reducir el espacio en disco almacenando cada layer solo una vez
La caché de Docker
Docker almacena en caché cada layer. Durante un rebuild, Docker verifica si un layer ha cambiado. Si nada ha cambiado, reutiliza el layer en caché en lugar de reconstruirlo.
Mal orden vs buen orden
MAL: requirements después de COPY . .
FROM python:3.11-slim WORKDIR /app COPY . . ← Tout le code source RUN pip install -r requirements.txt ← Installation des dépendances CMD ["python", "app.py"]
app.py), el layer COPY . . cambia. Como está antes de RUN pip install, Docker debe reinstalar todas las dependencias en cada build. En un proyecto con muchas dependencias, esto puede tardar varios minutos.BIEN: requirements antes de COPY . .
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . ← Seulement les dépendances RUN pip install -r requirements.txt ← Installation (caché si requirements.txt n'a pas changé) COPY . . ← Le code source (change souvent) CMD ["python", "app.py"]
COPY . .. Las dependencias (pip install) quedan en caché y no se reinstalan. El build pasa de varios minutos a unos segundos.Mal orden
Buen orden
Demostración: observar la caché
Paso 1: Crear el proyecto
mkdir ~/demo-cache cd ~/demo-cache
Crea requirements.txt:
touch requirements.txt nano requirements.txt
Construir y lanzar tu primera imagen
.dockerignore.# Arrêter TOUS les conteneurs en cours docker stop $(docker ps -a -q) # Supprimer TOUS les conteneurs docker rm $(docker ps -a -q) # Supprimer TOUTES les images (optionnel) docker rmi $(docker images -q) # Forcer la suppression si une image résiste docker rmi -f $(docker images -q)
-f (force) elimina incluso las imágenes usadas por contenedores.Objetivos pedagógicos
Crear el proyecto
Paso 1: Crear la carpeta del proyecto
mkdir ~/mon-premier-docker cd ~/mon-premier-docker
Paso 2: Crear el script Python
Crea un archivo hello.py:
touch hello.py nano hello.py
Pega este contenido y guarda (Ctrl + O, Intro, Ctrl + X):
print("Bonjour depuis Docker !")echo 'print("Bonjour depuis Docker !")' > hello.pyVerifica el contenido del archivo:
cat hello.py
Paso 3: Crear el Dockerfile
Crea un archivo llamado Dockerfile (sin extensión):
touch Dockerfile nano Dockerfile
Pega este contenido y guarda (Ctrl + O, Intro, Ctrl + X):
FROM python:3.11-slim WORKDIR /app COPY hello.py . CMD ["python", "hello.py"]
Este artículo cubre los extractos más útiles — el curso completo Docker Containerization (12 capítulos, 41 lecciones, ejercicios corregidos y proyecto final) te lleva hasta el final.
./acceder-au-cours-complet cours gratuit : Maîtriser Claude CodeFAQ
¿Cuánto tiempo se tarda en aprender Docker Containerization?
¿Se necesitan requisitos previos?
¿Por dónde empezar concretamente?
📬 ¿Quieres recibir este tipo de guía cada semana? Suscríbete gratis — código real, cero palabrería.