Explicación
El bucle agéntico y el patrón ReAct
El bucle agéntico (razonar, actuar, observar) en movimiento.
Vídeo
Explicaciones animadas cortas y laboratorios prácticos grabados en una máquina real. Cada vídeo tiene su propia página.
Explicación
El bucle agéntico (razonar, actuar, observar) en movimiento.
Explicación
Cómo el momentum acumula velocidad y suaviza el descenso de gradiente.
Explicación
El grafo computacional y la diferenciación automática, en acción.
Explicación
La derivación de la retropropagación, factor a factor con la regla de la cadena.
Explicación
La intuición de la retropropagación: el error fluye hacia atrás por la red.
Explicación
Batch, estocástico y mini-batch: tres formas de recorrer los datos.
Explicación
El descenso de gradiente, paso a paso: cómo la pendiente guía cada actualización del peso.
Explicación
Entropía, entropía cruzada y divergencia KL, visualizadas.
Explicación
Por qué una función de activación no lineal hace posible el aprendizaje profundo.
Explicación
La función softmax, explicada paso a paso.
Laboratorio
Actualizar Jellyfin de la 10.11.11 a la 12.0 en Docker exige copiar antes el volumen /config, porque la 12.0 reescribe la base de datos. En este lab haces la copia con un contenedor auxiliar, migras, lees la versión 12.0.0 desde la API y compruebas que volver atrás solo funciona restaurando esa copia.
Laboratorio
Para actualizar Gitea 1.27 a 28 con Docker, para el contenedor, copia el volumen /data, borra de app.ini las claves de egress heredadas y cambia GITEA_TAG a 28.0.0. En este lab la 28 arranca con 13 migraciones y 0 errores, y el repositorio y el webhook creados en la 1.27.3 siguen funcionando.
Laboratorio
OpenBao es el gestor de secretos con licencia MPL 2.0 que mantiene la API de Vault. En este laboratorio lo levantas en Docker con la imagen 2.6.2 y almacenamiento Raft, lo inicializas con 5 claves, lo desellas con 3, guardas y lees un secreto en KV v2 y haces un snapshot de Raft como copia de seguridad.
Laboratorio
llama-server, el servidor de llama.cpp, sirve un modelo GGUF con la misma API que OpenAI. En este laboratorio lo ejecutas en Docker con la imagen server-v0.5.0, descarga Qwen3.5 0.8B de Hugging Face a un volumen, exige una clave de API y contesta a /v1/chat/completions solo con CPU.
Laboratorio
El error pull access denied de MinIO aparece porque minio/minio ya no existe en Docker Hub. En este laboratorio confirmas el 404 en su API, levantas cgr.dev/chainguard/minio con Docker Compose, arreglas el file access denied con chown 65532 y creas un bucket y un objeto con el cliente mc de Chainguard.
Laboratorio
Para migrar MinIO a Garage, levanta Garage v2.4.1 junto a MinIO en el mismo proyecto de Compose, crea una clave y el bucket de destino, copia con rclone sync y verifica con rclone check --download. En este lab, 300 objetos llegan con 0 diferencias y la clave de MinIO importada sigue leyéndolos desde Garage.
Laboratorio
El DNS (Sistema de Nombres de Dominio) es la agenda de Internet: traduce nombres como jacar.es en direcciones IP. Un servidor DNS recursivo recorre la jerarquía —raíz, dominio de nivel superior y servidor autoritativo— y cachea la respuesta. En este lab lo compruebas en vivo con dig y levantas tu propio servidor DNS validante con DNSSEC.
Laboratorio
Una VM agéntica reúne en una misma máquina el runtime que mantiene vivos a varios agentes de código, un contexto que todos leen y un acceso remoto. Este laboratorio la monta sobre Ubuntu con herdr, instala Claude Code, Codex, OpenCode y OpenClaw, y les da una memoria MCP común.
Laboratorio
Un registro Docker privado guarda y sirve tus propias imágenes de contenedor sin depender de Docker Hub. En este laboratorio levantas registry:3 con TLS, usando una CA propia en la que confía el cliente, y autenticación htpasswd: un push anónimo falla y, tras docker login, subes y recuperas una imagen alpine por HTTPS.
Laboratorio
Un multi-stage build en Docker encadena varias etapas FROM en un mismo Dockerfile: una compila con el compilador completo y la etapa final, mínima (Alpine, scratch o distroless), solo copia el binario resultante con COPY --from=build. La imagen de producción queda mucho más pequeña y con menor superficie de ataque.
Laboratorio
Un HEALTHCHECK le dice a Docker cómo comprobar si un contenedor funciona de verdad, no solo si sigue en marcha; docker inspect y docker ps muestran ese estado como healthy o unhealthy. Las políticas de reinicio deciden qué pasa si el proceso falla: no, on-failure, always o unless-stopped, y Compose puede esperar a un servicio healthy antes de arrancar otro.
Laboratorio
La gestión de secretos en Docker significa nunca dejar tokens ni contraseñas en ARG, ENV o COPY del Dockerfile, porque quedan grabados en la imagen para siempre. Este lab demuestra la fuga real con docker history y la corrige con BuildKit --secret, un archivo de solo lectura, un env-file acotado y los secrets nativos de Compose.
Laboratorio
Traefik con Docker es un proxy inverso que lee el socket de Docker y convierte las etiquetas de cada contenedor en reglas de enrutado automáticas. En este laboratorio lo levantas junto a dos backends y compruebas con curl que cada nombre de host llega al contenedor correcto, sin tocar ningún fichero de rutas.
Laboratorio
Pi-hole es un servidor DNS que actúa como sinkhole: filtra las consultas de toda tu red antes de que lleguen a Internet y bloquea los dominios de publicidad y rastreo de sus listas, respondiendo 0.0.0.0 en vez de reenviarlas. En este lab lo levantas en Docker y lo compruebas en vivo con dig.
Laboratorio
Un volumen Docker guarda datos fuera del contenedor, en una ubicación que gestiona el propio Docker. Para respaldarlo, un contenedor alpine desechable monta el volumen y una carpeta del host, y empaqueta los datos con tar en un .tar.gz. Restaurar es el proceso inverso: extraer ese archivo dentro de un volumen nuevo y comprobar que los datos vuelven intactos.
Laboratorio
Docker Compose es la herramienta que describe una aplicación multi-contenedor en un único archivo YAML: qué servicios levantar, cómo se conectan en red y qué datos persisten en volúmenes con nombre. En este lab defines un servicio web con Nginx y una caché con Redis, los conectas por nombre de servicio y compruebas todo con curl.
Laboratorio
Un contenedor es efímero, pero sus datos no tienen por qué serlo. Un volumen de Docker vive fuera del contenedor, gestionado por Docker, mientras que un bind mount usa directamente una ruta del host. En este laboratorio creamos un volumen con nombre, escribimos datos desde un contenedor, lo eliminamos por completo y leemos esos mismos datos desde uno nuevo.
Laboratorio
Docker conecta los contenedores a una red bridge por defecto, pero esa red no resuelve nombres: solo funciona por IP. Al crear una red personalizada con docker network create, Docker activa un DNS interno y cada contenedor puede localizar a los demás por su nombre, quedando aislado del resto de redes.
Laboratorio
Instala Portainer en Docker paso a paso: volumen persistente, contenedor con la UI en el puerto 9443 y acceso web verificado. Cada paso se comprueba.