Docker y Kubernetes en el examen TAI: lo que cayó en 2026 y lo que vendrá
Contenedores y orquestación son ya tema obligado del examen TAI. En 2026 cayeron preguntas explícitas sobre Docker y Kubernetes, y la tendencia para 2027 apunta a más peso aún. Repasamos qué tienes que saber con seguridad, qué trampas usa el tribunal y cómo abordarlo desde cero.
Por qué Docker y Kubernetes cayeron en TAI 2026
El temario oficial del TAI incluye virtualización, contenedores y microservicios en el bloque IV (tema "Virtualización, contenedores, microservicios y nube"). Hasta 2022 las preguntas iban más sobre conceptos clásicos de virtualización (hipervisores tipo 1 y 2, VMware, Hyper-V). A partir de 2024 empieza a aparecer Docker con preguntas conceptuales. En 2026 ya cayeron preguntas explícitas tanto de Docker como de Kubernetes en la primera parte teórica.
La Administración General del Estado está migrando muchos de sus servicios a infraestructura contenerizada, lo que explica el peso creciente en examen. Para TAI 2027 es altamente probable que el peso siga aumentando, especialmente en los supuestos prácticos del Bloque IV.
Virtualización: la base que tienes que tener clara
Antes de meterte con contenedores, conviene entender el contexto. Los hipervisores son el software que permite ejecutar máquinas virtuales:
| Tipo | Descripción | Ejemplos |
|---|---|---|
| Tipo 1 (bare metal) | Se instala directamente sobre el hardware. Más eficiente. | VMware ESXi, Microsoft Hyper-V, Xen, KVM, Proxmox |
| Tipo 2 (hosted) | Se instala sobre un sistema operativo. Menos eficiente, más sencillo de configurar. | VirtualBox, VMware Workstation, Parallels |
Trampa típica: el tribunal pregunta si KVM es tipo 1 o tipo 2. Es tipo 1 porque se ejecuta a nivel del kernel de Linux (el propio kernel actúa como hipervisor). Aunque parezca que corre "sobre Linux", es bare metal.
Contenedores: diferencia con máquinas virtuales
Esta es la trampa principal que el tribunal usa con contenedores. Memoriza estas diferencias porque es donde la mayoría falla:
| Máquina virtual | Contenedor | |
|---|---|---|
| Kernel | Cada VM tiene su propio kernel | Comparten el kernel del host |
| Aislamiento | Hardware virtualizado | Aislamiento por namespaces y cgroups |
| Arranque | Minutos (igual que un PC físico) | Segundos |
| Tamaño | GB (incluye SO completo) | MB (solo la app y dependencias) |
| Overhead | Alto | Bajo |
| Portabilidad | Media (formatos OVA, VMDK) | Alta (imagen Docker) |
Trampa muy frecuente: "los contenedores son más seguros que las máquinas virtuales". FALSO. Son menos seguros precisamente porque comparten kernel: un fallo de seguridad en el kernel afecta a todos los contenedores. Las VMs ofrecen mayor aislamiento real.
Docker: lo que el tribunal pregunta
Conceptos clave
- Imagen: plantilla inmutable de solo lectura. Se construye desde un
Dockerfile. - Contenedor: instancia en ejecución de una imagen. Es efímero (se borra cuando termina, salvo que uses volúmenes).
- Dockerfile: archivo de texto con instrucciones para construir una imagen. Cada instrucción genera una "capa" cacheable.
- Registry: repositorio donde se almacenan imágenes. Docker Hub es el público; las empresas suelen usar registries privados (Harbor, AWS ECR, Azure ACR).
- Volumen: mecanismo para persistir datos fuera del ciclo de vida del contenedor.
Instrucciones esenciales del Dockerfile
| Instrucción | Función |
|---|---|
FROM | Imagen base (siempre la primera). Ej: FROM alpine:3.18 |
RUN | Ejecuta comando en tiempo de construcción |
COPY | Copia ficheros del host al contenedor |
ADD | Como COPY pero soporta URLs y descomprime tar |
ENV | Variable de entorno |
EXPOSE | Documenta el puerto que escucha la app (no abre el puerto realmente, eso lo hace -p) |
WORKDIR | Directorio de trabajo dentro del contenedor |
CMD | Comando por defecto al arrancar el contenedor (puede sobreescribirse) |
ENTRYPOINT | Comando fijo al arrancar (CMD pasa argumentos) |
Comandos Docker más importantes
docker build -t miapp:1.0 . # Construir imagen desde Dockerfile
docker images # Listar imágenes locales
docker run -d -p 8080:80 nginx # Ejecutar contenedor en background
docker ps # Listar contenedores en ejecución
docker ps -a # Listar TODOS (incluidos parados)
docker logs <contenedor> # Ver logs
docker exec -it <cont> sh # Shell interactivo
docker stop <contenedor> # Parar
docker rm <contenedor> # Borrar contenedor
docker rmi <imagen> # Borrar imagen
docker volume create datos # Crear volumen
docker network create red1 # Crear red
Docker Compose: orquestación local
Cuando una aplicación necesita varios contenedores (frontend + backend + base de datos), Docker Compose permite definirlos juntos en un fichero docker-compose.yml en YAML.
version: '3.8'
services:
web:
image: nginx
ports:
- "8080:80"
api:
build: ./api
environment:
DB_HOST: postgres
postgres:
image: postgres:15
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
Comandos clave: docker compose up -d (arrancar), docker compose down (parar y borrar), docker compose logs (ver logs).
Kubernetes: orquestación a escala
Kubernetes (K8s) es el orquestador estándar para contenedores en producción. Lo que el tribunal pregunta son los conceptos arquitectónicos, no los comandos concretos.
Arquitectura de Kubernetes
- Cluster: conjunto de nodos administrados como uno solo.
- Control Plane (master): gestiona el cluster. Componentes:
- API Server: punto de entrada (REST).
- etcd: base de datos clave-valor que almacena el estado del cluster.
- Scheduler: decide en qué nodo se ejecuta cada Pod.
- Controller Manager: ejecuta los controladores (Deployment, ReplicaSet, etc.).
- Worker nodes: donde se ejecutan los contenedores. Cada nodo tiene:
- kubelet: agente que habla con el API Server.
- kube-proxy: gestiona reglas de red.
- Container runtime: Docker (deprecado en K8s 1.24+), containerd, CRI-O.
Objetos básicos de Kubernetes
| Objeto | Función |
|---|---|
| Pod | Unidad mínima desplegable. Uno o varios contenedores que comparten red y almacenamiento. Casi siempre un pod = un contenedor. |
| ReplicaSet | Mantiene N réplicas idénticas de un Pod. |
| Deployment | Gestiona ReplicaSets y permite rolling updates y rollbacks. Es lo más usado. |
| Service | Abstracción de red que da acceso estable a un conjunto de Pods (los pods se crean/destruyen, el Service permanece). |
| Ingress | Enruta tráfico HTTP/HTTPS externo a Services internos. Capa 7. |
| ConfigMap | Almacena configuración (variables, ficheros) separada del código. |
| Secret | Como ConfigMap pero para datos sensibles (passwords, tokens). Codificado en Base64 (no cifrado por defecto). |
| Volume | Almacenamiento accesible por uno o varios pods. Tipos: emptyDir, hostPath, PV/PVC. |
| Namespace | Aislamiento lógico dentro del cluster. |
| DaemonSet | Asegura que un Pod corre en TODOS los nodos (o un subconjunto). Típico para agentes de monitorización. |
| StatefulSet | Como Deployment pero para apps con estado (BBDD): identidad de red estable, almacenamiento persistente. |
| Job / CronJob | Ejecución puntual o programada (cron). |
Trampa típica con Secrets: "los Secret de Kubernetes están cifrados". FALSO por defecto. Están codificados en Base64, que es reversible trivialmente. Para cifrado real hay que activar encryption at rest a nivel de etcd, o usar herramientas externas como SealedSecrets o External Secrets Operator.
Comandos kubectl esenciales
kubectl get pods # Listar pods
kubectl get pods -n produccion # En namespace concreto
kubectl get all # Listar todo el namespace actual
kubectl describe pod <nombre> # Detalles de un pod
kubectl logs <pod> # Ver logs
kubectl exec -it <pod> -- sh # Shell interactivo
kubectl apply -f deployment.yaml # Aplicar manifest
kubectl delete -f deployment.yaml # Eliminar lo definido en manifest
kubectl scale deployment miapp --replicas=5 # Escalar
kubectl rollout undo deployment miapp # Revertir despliegue
Trampas frecuentes del tribunal con contenedores
- Contenedores vs máquinas virtuales: aislamiento, kernel compartido, seguridad. Trampa: confundir el nivel de aislamiento real.
- Imagen vs contenedor: imagen = plantilla, contenedor = ejecución.
- Pod = contenedor: falso. Un Pod puede tener varios contenedores; un contenedor solo está dentro de un Pod.
- Kubernetes ya no usa Docker como runtime: desde K8s 1.24 se usa containerd o CRI-O por defecto. Docker sigue siendo el cliente más popular para construir imágenes.
- Secrets no están cifrados: Base64 no es cifrado.
- Service vs Ingress: Service trabaja en capa 4 (TCP/UDP), Ingress en capa 7 (HTTP). Ingress requiere un Ingress Controller (Nginx, Traefik) instalado.
- EXPOSE en Dockerfile no abre el puerto: es documentación. Lo abre
-pendocker runoports:en compose. - StatefulSet vs Deployment: Deployment para apps sin estado (web), StatefulSet para apps con estado (bases de datos).
Cómo prepararte para preguntas de contenedores en TAI 2027
- Domina los conceptos primero, no los comandos: el tribunal pregunta arquitectura (qué es un Pod, qué es un Deployment), no scripts.
- Memoriza las diferencias clave: contenedor vs VM, imagen vs contenedor, Service vs Ingress, Deployment vs StatefulSet.
- Practica con preguntas reales: en MIMIR tienes preguntas de Docker y Kubernetes de las convocatorias 2024 y 2026, y preguntas IA generadas y validadas.
- Repasa el tema completo de virtualización: los hipervisores tipo 1 vs 2 siguen cayendo en preguntas tradicionales.
Practica Docker, Kubernetes y virtualización con MIMIR
Más de 200 preguntas validadas sobre contenedores, orquestación e hipervisores, con preguntas reales de convocatorias TAI 2024 y 2026. Plus chuletas interactivas de Docker y Kubernetes.
Probar MIMIR gratis