Los 6 Dominios del DCA: Todo Lo Que Necesitas Saber
certificationintermediate

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.

Antoine C
14 min read
#docker#certification#dca#orchestration#networking#security#storage#docker certified associate

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:

DominioPesoPreguntas EstimadasDificultad
Orchestration25%~14 preguntasAlta
Images & Registry20%~11 preguntasMedia
Installation & Configuration15%~8 preguntasMedia
Networking15%~8 preguntasAlta
Security15%~8 preguntasMedia
Storage10%~6 preguntasBaja
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#

bash
# 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#

  1. Monta un clúster Swarm de mínimo 3 nodos (1 manager + 2 workers)
  2. Practica los rolling updates con diferentes configuraciones
  3. Prueba escenarios de fallo: ¿qué pasa cuando un manager cae?
  4. 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
Pon la Teoría en Práctica
Aplica lo que has aprendido con escenarios Docker interactivos y entornos reales.

Mejores Prácticas de Dockerfile#

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
FROMImagen base
RUNEjecutar comandos
COPYCopiar archivos
ADDCopiar + extraer archivos
CMDNoComando por defecto
ENTRYPOINTNoPunto de entrada
ENVVariables de entorno
ARGNoVariables de build
EXPOSENoDocumentación de puerto
USERNoUsuario de ejecución
WORKDIRDirectorio 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#

bash
# 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 prune
¿Listo para Probarlo por Ti Mismo?
Practica estos conceptos Docker en un entorno real con escenarios prácticos.

3. 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:

json
{
  "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#

DriverRecomendadoCaso de Uso
overlay2✔ SíLinux moderno (kernel 4.0+)
fuse-overlayfs✔ SíRootless Docker
btrfsEspecíficoSistemas de archivos btrfs
zfsEspecíficoSistemas de archivos ZFS
devicemapper✗ DeprecadoLegacy
aufs✗ DeprecadoLegacy
vfs✗ LentoSolo debug

Logging Drivers#

DriverDescripción
json-fileArchivos JSON locales (por defecto)
journaldIntegración con systemd journal
syslogServidor syslog
fluentdColector Fluentd
gelfFormato Graylog GELF
awslogsAmazon CloudWatch
gcplogsGoogle 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#

TipoAlcanceUso
bridgeLocalContenedores en el mismo host
hostLocalCompartir red del host
overlayMulti-hostComunicación Swarm
macvlanLocalDirecciones MAC dedicadas
noneLocalSin red

Diagrama Conceptual#

schema
┌──────────────────────────────────────────────────────────┐
                     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             
  └──────────────────────────────────────────────────┘    
└──────────────────────────────────────────────────────────┘
Domina Docker de Forma Práctica
Ve más allá de la teoría - practica con contenedores reales y escenarios de orquestación.

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#

bash
# 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 mycontainer

5. 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:

bash
# 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:

bash
# 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:v1

Capabilities Linux#

Docker elimina por defecto ciertas capabilities peligrosas. Puedes ajustar:

bash
# 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_MODULE

Preguntas 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.

¿Listo para Probarlo por Ti Mismo?
Practica estos conceptos Docker en un entorno real con escenarios prácticos.

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#

TipoGestionado por DockerCaso de Uso
Volume✔ SíDatos persistentes, compartir entre contenedores
Bind mount✗ NoDesarrollo, acceso a archivos específicos del host
tmpfs✔ SíDatos temporales sensibles (en memoria)

Sintaxis de Montaje#

bash
# 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 nginx

Comandos Esenciales#

bash
# 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 /target

Preguntas 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#

  1. Orchestration (25%) - El más importante, empieza por aquí
  2. Images & Registry (20%) - Fundamental para entender Docker
  3. Networking (15%) - Técnico pero esencial
  4. Security (15%) - Conceptos clave a memorizar
  5. Installation & Config (15%) - Más teórico, repasable rápidamente
  6. Storage (10%) - El más simple, déjalo para el final

Distribución del Tiempo de Estudio#

DominioPeso ExamenTiempo Recomendado
Orchestration25%40% del tiempo
Images & Registry20%25% del tiempo
Networking + Security + Installation45%30% del tiempo
Storage10%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#


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.

Los 6 Dominios del DCA: Todo Lo Que Necesitas Saber