Contenedores con Docker
Imágenes, capas, volúmenes, redes y Compose: el mismo programa corriendo igual en todos lados.
13 aulas · 6 horas de práctica · en el navegador, sin instalar nada
Temario
- El problema y la idea — «En mi máquina anda»: por qué pasa, y cómo un contenedor lo resuelve compartiendo el kernel del host en vez de virtualizar una máquina entera. Namespaces, cgroups, e imagen contra contenedor.
- Correr contenedores — `docker run` y sus flags más usadas (`-d`, `-p`, `--name`, `-e`, `--rm`), cómo mirar adentro con `ps`, `logs` y `exec`, y el ciclo de vida completo: `stop`, `start`, `pause`, `rm`.
- El Dockerfile — Una receta de texto para armar una imagen: `FROM`, `WORKDIR`, `COPY`, `RUN`, `EXPOSE`, `CMD` contra `ENTRYPOINT`. `docker build` y las etiquetas (tags) para identificar cada versión.
- Primer parcial: la idea y los primeros comandos — Namespaces y cgroups contra máquinas virtuales, imagen contra contenedor, las flags de `docker run`, y las instrucciones básicas de un Dockerfile.
- Capas y caché — Cada instrucción del Dockerfile es una capa; Docker cachea las que no cambiaron y reconstruye desde la primera que sí. Por qué el orden de las instrucciones decide cuánto tarda cada build.
- Buenas imágenes — Multi-stage builds para no cargar herramientas de compilación al runtime, `.dockerignore`, imágenes base chicas, un usuario que no sea root, y un solo proceso por contenedor.
- Volúmenes y persistencia — La capa escribible de un contenedor desaparece con él. Bind mounts contra volúmenes nombrados, permisos entre el host y el contenedor, y por qué una base de datos en un contenedor necesita uno de los dos.
- Redes — La red por defecto de Docker contra una red propia: solo la segunda da DNS por nombre de servicio. Puertos publicados (accesibles desde afuera del host) contra puertos internos (solo entre contenedores de la misma red).
- Segundo parcial: capas, imágenes y lo que conecta contenedores — Caché de capas y por qué el orden del Dockerfile importa, multi-stage y buenas prácticas de imagen, volúmenes contra la capa escribible, y redes con DNS por nombre de servicio.
- Compose — Un archivo YAML para levantar varios contenedores relacionados de una vez: servicios, `depends_on`, variables de entorno, volúmenes, y el ciclo `up`/`down`/`logs`.
- Registries, versiones y configuración — Docker Hub y otros registries, `docker push`/`pull`, tags contra digest, por qué `latest` es una trampa en producción, secretos fuera de la imagen, y healthchecks.
- Depurar y asegurar — `docker inspect` y `docker stats` para ver qué hay adentro de un contenedor y cuánto consume, límites de CPU y memoria, escaneo de vulnerabilidades en una imagen, y por qué firmar una imagen importa.
- Examen final: la carrera completa — Desde namespaces y cgroups hasta escaneo de vulnerabilidades e imágenes firmadas: el temario entero de Contenedores con Docker, en diez preguntas que cruzan varias aulas cada una.