Saltar al contenido
Lectura5 minPreview

Bienvenida al curso

El firewall del servidor dice que solo SSH está abierto. Usted levanta una base de datos en un contenedor y la prueba desde otra máquina de la red:

$ sudo ufw status
Status: active
 
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
 
$ docker run -d --name db -p 5432:5432 -e POSTGRES_PASSWORD=cambiar postgres:16
 
# desde otra máquina de la red
$ nc -zv 192.0.2.10 5432
Connection to 192.0.2.10 5432 port [tcp/postgresql] succeeded!

No es un error de UFW. Al publicar un puerto, Docker escribe sus propias reglas de iptables, y esas se evalúan antes que las de UFW.

Bienvenido a Docker: fundamentos y seguridad. Va a empaquetar y ejecutar aplicaciones en contenedores sabiendo qué abre cada opción, qué queda dentro de cada imagen y qué controla de verdad cada bandera de docker run.

Qué va a lograr

  • Explicar qué es un contenedor y en qué se diferencia de una máquina virtual.
  • Manejar el ciclo de vida de un contenedor con docker run, ps, logs, exec, stop y rm.
  • Escribir Dockerfiles con caché bien aprovechada, etiquetas fijas, .dockerignore y multi-stage.
  • Conectar una API Python con PostgreSQL usando redes, volúmenes y Compose sin hornear secretos en la imagen.
  • Endurecer un contenedor (usuario no root, imagen mínima, Trivy, capacidades, límites) y detectar el socket montado o --privileged.

Para quién es y qué necesita

Es para quien ya se mueve con soltura en una terminal Linux, venga de desarrollo, operaciones o seguridad. Conviene haber hecho Linux básico: 15 comandos para empezar; la píldora Su primer contenedor con Docker sirve de calentamiento.

Necesita una VM con Ubuntu 22.04 o 24.04 (4 GB de RAM y 20 GB de disco como mínimo) o Docker Desktop en Windows o macOS. Prefiera la VM: el caso de arriba y varios del módulo 4 se ven tal cual en Linux.

Cómo está organizado

MóduloQué aprendeLaboratorio
1. Contenedores: primeros pasosQué es un contenedor, imágenes y capas, instalación y el cliente dockerSus primeros contenedores con nginx
2. Construir imágenesDockerfile, caché, docker build, etiquetas, .dockerignore y multi-stageLa imagen de una API en Python
3. Redes, volúmenes y ComposeRedes de usuario, publicación de puertos, volúmenes, Compose y secretosAPI y PostgreSQL con Compose
4. Seguridad de contenedoresUsuario no root, imágenes mínimas, Trivy y Docker Scout, socket, capacidades y límites, más la conclusiónEndurecer un contenedor de punta a punta
Evaluación6 preguntas sobre todo el cursoAprueba con 70 %

Cómo aprovecharlo

Haga docker pull de las imágenes de cada laboratorio antes de sentarse a trabajar, para no quedarse esperando descargas a mitad de un paso.

El laboratorio del módulo 3 es el que más se traba: junta en un solo compose.yaml dos redes, un volumen, un secreto y la condición de salud que hace esperar a la API hasta que PostgreSQL responde. Un nombre mal escrito y la API no levanta. Valide con docker compose config y lea docker compose logs api antes de cambiar nada.

En el módulo 4 compruebe cada control con docker inspect o docker exec, no con la fe de que la bandera quedó bien escrita. Al aprobar la evaluación final recibe el certificado y la insignia.

Tiempo estimado

Unas 5 horas, más de hora y media en laboratorios. Al terminar cada uno, limpie con docker compose down o docker rm.