
Los 6 Dominios del DCA: Todo Lo Que Necesitas Saber
Guía completa de los 6 dominios del examen Docker Certified Associate: Orchestration, Images, Installation, Networking, Security y Storage. Comandos esenciales y estrategias de estudio.
Los 6 Dominios del DCA: Todo Lo Que Necesitas Saber
El examen Docker Certified Associate cubre 6 dominios distintos, cada uno con un peso diferente en la puntuación final. Comprender esta distribución es esencial para optimizar tu preparación.
Este artículo detalla cada dominio: qué se evalúa, los comandos a dominar y ejemplos de preguntas típicas. Al final, tendrás una visión clara de qué esperar y una estrategia de estudio efectiva.
Visión General de los Dominios#
El examen DCA consta de 55 preguntas a completar en 90 minutos. Así se distribuyen los puntos:
| Dominio | Peso | Preguntas Estimadas | Dificultad |
|---|---|---|---|
| Orchestration | 25% | ~14 preguntas | Alta |
| Images & Registry | 20% | ~11 preguntas | Media |
| Installation & Configuration | 15% | ~8 preguntas | Media |
| Networking | 15% | ~8 preguntas | Alta |
| Security | 15% | ~8 preguntas | Media |
| Storage | 10% | ~6 preguntas | Baja |
Estadística clave
Orchestration e Images representan juntos el 45% del examen. Si dominas estos dos dominios, ya tienes casi la mitad de los puntos asegurados.
Cómo Leer Esta Guía#
Para cada dominio encontrarás:
- Qué se Evalúa: Conceptos clave a dominar
- Comandos Esenciales: Comandos Docker imprescindibles
- Preguntas Típicas: Ejemplos representativos del formato de examen
- Consejos de Estudio: Cómo abordar eficazmente el dominio
1. Orchestration (25%)#
Orchestration es el dominio más pesado del examen. Se centra en Docker Swarm, el sistema de orquestación nativo de Docker.
Qué se Evalúa#
- Inicialización y gestión de un clúster Swarm
- Creación, actualización y escalado de servicios
- Rolling updates y rollbacks
- Gestión de nodos (managers, workers)
- Stacks y despliegue mediante archivos Compose
- Ubicación de contenedores (constraints, preferences)
- Alta disponibilidad y quórum de managers
Los 10 Comandos Esenciales#
# Gestión del clúster
docker swarm init --advertise-addr <IP>
docker swarm join --token <TOKEN> <MANAGER-IP>:2377
docker swarm leave [--force]
# Gestión de nodos
docker node ls
docker node update --availability drain <NODE>
docker node promote <NODE>
docker node demote <NODE>
# Gestión de servicios
docker service create --name <NAME> --replicas <N> <IMAGE>
docker service scale <SERVICE>=<N>
docker service update --image <NEW-IMAGE> <SERVICE>
docker service rollback <SERVICE>
# Stacks
docker stack deploy -c docker-compose.yml <STACK-NAME>
docker stack ls
docker stack services <STACK-NAME>
docker stack rm <STACK-NAME>Preguntas Típicas#
P1: ¿Qué comando muestra las tareas de un servicio específico?
La respuesta es docker service ps <SERVICE>. Cuidado con la trampa docker service tasks que no existe.
P2: ¿Cómo limitar un servicio a nodos con la etiqueta env=production?
Usa --constraint node.labels.env==production. Nota el doble == y el prefijo node.labels..
P3: ¿Cuál es el número mínimo de managers para tolerar la pérdida de un manager?
Se necesitan 3 managers para tolerar 1 fallo (quórum = 2). La fórmula es: (N-1)/2 fallos tolerados.
Trampa común
No confundas docker service scale myapp=5 (correcto) con docker scale myapp=5 (incorrecto). El comando scale solo existe a nivel de servicio.
Consejos de Estudio#
- Monta un clúster Swarm de mínimo 3 nodos (1 manager + 2 workers)
- Practica los rolling updates con diferentes configuraciones
- Prueba escenarios de fallo: ¿qué pasa cuando un manager cae?
- Domina los constraints:
node.role,node.labels,node.hostname
2. Images & Registry (20%)#
Este dominio evalúa tu capacidad para crear, optimizar y distribuir imágenes Docker.
Qué se Evalúa#
- Escritura de Dockerfiles optimizados
- Multi-stage builds
- Gestión de la caché de build
- Push/pull hacia registries
- Tagging y versionado
- Docker Content Trust
- Inspección e historial de imágenes
Mejores Prácticas de Dockerfile#
# 1. Usar una imagen base ligera
FROM node:18-alpine
# 2. Definir un usuario no-root
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# 3. Copiar primero los archivos de dependencias (caché)
COPY package*.json ./
RUN npm ci --only=production
# 4. Copiar el código fuente después
COPY --chown=appuser:appgroup . .
# 5. Exponer el puerto (documentación)
EXPOSE 3000
# 6. Definir el usuario
USER appuser
# 7. Usar la forma exec para CMD
CMD ["node", "server.js"]Tabla de Instrucciones Dockerfile#
| Instrucción | ¿Crea capa? | Uso |
|---|---|---|
FROM | Sí | Imagen base |
RUN | Sí | Ejecutar comandos |
COPY | Sí | Copiar archivos |
ADD | Sí | Copiar + extraer archivos |
CMD | No | Comando por defecto |
ENTRYPOINT | No | Punto de entrada |
ENV | Sí | Variables de entorno |
ARG | No | Variables de build |
EXPOSE | No | Documentación de puerto |
USER | No | Usuario de ejecución |
WORKDIR | Sí | Directorio de trabajo |
Preguntas Típicas#
P1: ¿Qué instrucción permite copiar un archivo desde una etapa anterior?
COPY --from=<stage> permite copiar desde otra etapa en un multi-stage build.
P2: ¿Cuál es la diferencia entre ENTRYPOINT y CMD?
ENTRYPOINT define el comando principal (difícil de reemplazar), CMD proporciona los argumentos por defecto (fácilmente reemplazables).
P3: ¿Cómo invalidar la caché a partir de una instrucción específica?
Modifica el archivo copiado antes de esa instrucción, o usa --no-cache para desactivar toda la caché.
Optimización de caché
El orden de las instrucciones es crucial. Coloca las instrucciones que cambian raramente (instalación de dependencias del sistema) antes de las que cambian frecuentemente (copia del código fuente).
Comandos Esenciales#
# Build
docker build -t myimage:v1 .
docker build --no-cache -t myimage:v1 .
docker build --target <stage> -t myimage:v1 .
# Tagging y push
docker tag myimage:v1 registry.example.com/myimage:v1
docker push registry.example.com/myimage:v1
docker pull registry.example.com/myimage:v1
# Inspección
docker image history myimage:v1
docker image inspect myimage:v1
docker image ls
docker image prune3. Installation & Configuration (15%)#
Este dominio cubre la configuración del daemon Docker y del entorno de ejecución.
Qué se Evalúa#
- Instalación de Docker en diferentes OS
- Configuración del daemon mediante
daemon.json - Storage drivers
- Logging drivers
- Gestión de recursos (CPU, memoria)
- Configuración de red del daemon
- Securización de la API Docker
El Archivo daemon.json#
El archivo /etc/docker/daemon.json centraliza la configuración del daemon:
{
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"default-address-pools": [
{"base": "172.80.0.0/16", "size": 24}
],
"insecure-registries": ["registry.local:5000"],
"registry-mirrors": ["https://mirror.example.com"],
"live-restore": true,
"userland-proxy": false
}Storage Drivers#
| Driver | Recomendado | Caso de Uso |
|---|---|---|
overlay2 | ✔ Sí | Linux moderno (kernel 4.0+) |
fuse-overlayfs | ✔ Sí | Rootless Docker |
btrfs | Específico | Sistemas de archivos btrfs |
zfs | Específico | Sistemas de archivos ZFS |
devicemapper | ✗ Deprecado | Legacy |
aufs | ✗ Deprecado | Legacy |
vfs | ✗ Lento | Solo debug |
Logging Drivers#
| Driver | Descripción |
|---|---|
json-file | Archivos JSON locales (por defecto) |
journald | Integración con systemd journal |
syslog | Servidor syslog |
fluentd | Colector Fluentd |
gelf | Formato Graylog GELF |
awslogs | Amazon CloudWatch |
gcplogs | Google Cloud Logging |
Preguntas Típicas#
P1: ¿Qué comando recarga la configuración del daemon sin detener los contenedores?
sudo systemctl reload docker o sudo kill -SIGHUP $(pidof dockerd).
P2: ¿Qué storage driver se recomienda para Docker en Ubuntu 22.04?
overlay2 es el driver por defecto y recomendado para todos los sistemas Linux modernos.
P3: ¿Cómo verificar la configuración actual del daemon?
docker info muestra toda la información de configuración, incluyendo storage driver y logging driver.
4. Networking (15%)#
La red de Docker es uno de los dominios más técnicos. Requiere una buena comprensión de los diferentes tipos de redes.
Qué se Evalúa#
- Tipos de redes: bridge, host, overlay, macvlan, none
- Redes overlay para Swarm
- DNS interno de Docker
- Publicación de puertos
- Routing mesh e ingress
- Configuración de red de servicios
Tipos de Redes Docker#
| Tipo | Alcance | Uso |
|---|---|---|
bridge | Local | Contenedores en el mismo host |
host | Local | Compartir red del host |
overlay | Multi-host | Comunicación Swarm |
macvlan | Local | Direcciones MAC dedicadas |
none | Local | Sin red |
Diagrama Conceptual#
┌──────────────────────────────────────────────────────────┐
│ DOCKER HOST │
│ ┌──────────────────────────────────────────────────┐ │
│ │ bridge (docker0) │ │
│ │ ┌───────────┐ ┌───────────┐ │ │
│ │ │ Container │ │ Container │ │ │
│ │ │ 172.17. │ │ 172.17. │ │ │
│ │ └───────────┘ └───────────┘ │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ overlay (my-overlay) │ │
│ │ ┌───────────┐ ┌───────────┐ │ │
│ │ │ Service A │◄──── DNS ────────►│ Service B │ │ │
│ │ │ 10.0.0. │ (internal) │ 10.0.0. │ │ │
│ │ └───────────┘ └───────────┘ │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ ingress │ │
│ │ (routing mesh / load balancing) │ │
│ │ Puertos publicados: 80, 443 │ │
│ └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘DNS Interno de Docker#
Docker proporciona un servidor DNS integrado (127.0.0.11) que permite a los contenedores descubrirse por nombre:
- Contenedores: Resolución por nombre de contenedor en redes definidas por usuario
- Servicios Swarm: Resolución por nombre de servicio (load-balancing automático)
- Tareas: Resolución por
<task>.<service>.<stack>para apuntar a una tarea específica
Preguntas Típicas#
P1: ¿Qué red permite a los contenedores comunicarse entre múltiples nodos Swarm?
La red overlay permite la comunicación multi-host en un clúster Swarm.
P2: ¿Cómo hacer accesible una red overlay a contenedores standalone?
Usa la opción --attachable al crear la red.
P3: ¿Qué red es responsable del balanceo de carga de puertos publicados?
La red ingress gestiona el routing mesh y distribuye las peticiones entre las réplicas.
Comandos Esenciales#
# Creación de redes
docker network create mybridge
docker network create --driver overlay --attachable myoverlay
# Inspección
docker network ls
docker network inspect mynetwork
# Conexión/desconexión
docker network connect mynetwork mycontainer
docker network disconnect mynetwork mycontainer5. Security (15%)#
La seguridad es crítica en producción. Este dominio cubre los mecanismos de protección de Docker.
Qué se Evalúa#
- Docker Secrets y Configs
- Docker Content Trust
- Namespaces y cgroups
- Capabilities Linux
- Seccomp y AppArmor
- Escaneo de vulnerabilidades
- Configuración TLS
Docker Secrets#
Los secrets permiten almacenar datos sensibles de forma segura:
# Creación
echo "mypassword" | docker secret create db_password -
docker secret create ssl_cert ./cert.pem
# Uso en un servicio
docker service create \
--name myapp \
--secret db_password \
--secret source=ssl_cert,target=/etc/ssl/cert.pem \
myimage
# Los secrets se montan en /run/secrets/Docker Content Trust#
Content Trust garantiza la integridad y autenticidad de las imágenes:
# Activar Content Trust
export DOCKER_CONTENT_TRUST=1
# Firmar y subir una imagen
docker push myregistry/myimage:v1
# Verificación automática al pull
docker pull myregistry/myimage:v1Capabilities Linux#
Docker elimina por defecto ciertas capabilities peligrosas. Puedes ajustar:
# Eliminar todas las capabilities
docker run --cap-drop ALL nginx
# Añadir una capability específica
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx
# Capabilities típicamente eliminadas
# SYS_ADMIN, NET_ADMIN, SYS_PTRACE, SYS_MODULEPreguntas Típicas#
P1: ¿Dónde se montan los secrets en un contenedor de servicio?
En /run/secrets/<secret_name>, montado como tmpfs (en memoria).
P2: ¿Cuál es la diferencia entre secrets y configs?
Los secrets están cifrados en reposo en el Raft log, los configs se almacenan en texto plano.
P3: ¿Cómo activar Docker Content Trust?
export DOCKER_CONTENT_TRUST=1 antes de los comandos push/pull.
Error frecuente
Nunca almacenes secrets en variables de entorno (-e PASSWORD=xxx) o en las capas de la imagen (ENV PASSWORD=xxx). Usa Docker Secrets.
6. Storage (10%)#
Aunque representa solo el 10% del examen, el storage es esencial para aplicaciones con datos persistentes.
Qué se Evalúa#
- Volumes Docker
- Bind mounts
- tmpfs mounts
- Volume drivers
- Backup y restauración
Volumes vs Bind Mounts vs tmpfs#
| Tipo | Gestionado por Docker | Caso de Uso |
|---|---|---|
| Volume | ✔ Sí | Datos persistentes, compartir entre contenedores |
| Bind mount | ✗ No | Desarrollo, acceso a archivos específicos del host |
| tmpfs | ✔ Sí | Datos temporales sensibles (en memoria) |
Sintaxis de Montaje#
# Sintaxis -v (corta)
docker run -v myvolume:/app/data nginx
docker run -v /host/path:/container/path nginx
docker run -v /app/data nginx # Volume anónimo
# Sintaxis --mount (explícita, recomendada)
docker run --mount type=volume,source=myvolume,target=/app/data nginx
docker run --mount type=bind,source=/host/path,target=/container/path nginx
docker run --mount type=tmpfs,target=/app/temp nginx
# Opciones comunes
docker run --mount type=volume,source=myvolume,target=/data,readonly nginx
docker run -v myvolume:/data:ro nginxComandos Esenciales#
# Gestión de volumes
docker volume create mydata
docker volume ls
docker volume inspect mydata
docker volume rm mydata
docker volume prune
# Backup de un volume
docker run --rm \
-v mydata:/source:ro \
-v $(pwd):/backup \
alpine tar czf /backup/mydata.tar.gz -C /source .
# Restauración
docker run --rm \
-v mydata:/target \
-v $(pwd):/backup:ro \
alpine tar xzf /backup/mydata.tar.gz -C /targetPreguntas Típicas#
P1: ¿Cuál es la diferencia principal entre un volume y un bind mount?
Un volume es gestionado por Docker (en /var/lib/docker/volumes/), un bind mount apunta a una ruta arbitraria del host.
P2: ¿Cómo montar un volume en modo solo lectura con --mount?
Añade la opción readonly: --mount type=volume,source=mydata,target=/data,readonly
P3: ¿Qué comando elimina los volumes no utilizados?
docker volume prune elimina todos los volumes huérfanos.
Estrategia de Estudio#
Ya conoces los 6 dominios. Aquí tienes cómo optimizar tu preparación.
Orden de Estudio Recomendado#
- Orchestration (25%) - El más importante, empieza por aquí
- Images & Registry (20%) - Fundamental para entender Docker
- Networking (15%) - Técnico pero esencial
- Security (15%) - Conceptos clave a memorizar
- Installation & Config (15%) - Más teórico, repasable rápidamente
- Storage (10%) - El más simple, déjalo para el final
Distribución del Tiempo de Estudio#
| Dominio | Peso Examen | Tiempo Recomendado |
|---|---|---|
| Orchestration | 25% | 40% del tiempo |
| Images & Registry | 20% | 25% del tiempo |
| Networking + Security + Installation | 45% | 30% del tiempo |
| Storage | 10% | 5% del tiempo |
Consejo
Concentra el 65% de tu tiempo en Orchestration e Images. Son los dominios donde la práctica hands-on marca la mayor diferencia, y representan el 45% del examen.
Checklist Antes del Examen#
- Puedo inicializar y gestionar un clúster Swarm de 3 nodos
- Puedo escribir un Dockerfile multi-stage optimizado
- Entiendo los diferentes tipos de redes Docker
- Sé crear y usar secrets Docker
- Conozco las opciones de daemon.json
- Domino la diferencia entre volumes y bind mounts
Recursos Adicionales#
- Documentación oficial de Docker
- Nuestro artículo sobre el formato DOMC
- 30 Preguntas DCA #1
- Guía completa DCA 2026
Conclusión#
Los 6 dominios del DCA evalúan competencias complementarias:
- Orchestration y Networking: La práctica hands-on es indispensable
- Images y Security: Comprender conceptos y mejores prácticas
- Installation y Storage: Más teóricos, pero puntos "fáciles"
Con una preparación estructurada y mucha práctica, tienes todo lo necesario para aprobar el examen.
¿Listo para pasar a la acción? Entrena con escenarios prácticos y quizzes en formato DOMC para maximizar tus posibilidades de éxito.