Les 6 Domaines du DCA : Tout Ce Qu'il Faut Savoir
certificationintermediate

Les 6 Domaines du DCA : Tout Ce Qu'il Faut Savoir

Guide complet des 6 domaines de l'examen Docker Certified Associate : Orchestration, Images, Installation, Networking, Security et Storage. Commandes essentielles et stratégies de révision.

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

Les 6 Domaines du DCA : Tout Ce Qu'il Faut Savoir

L'examen Docker Certified Associate couvre 6 domaines distincts, chacun avec un poids différent dans le score final. Comprendre cette répartition est essentiel pour optimiser ta préparation.

Cet article détaille chaque domaine : ce qui est testé, les commandes à maîtriser, et des exemples de questions types. À la fin, tu auras une vision claire de ce qui t'attend et une stratégie de révision efficace.


Vue d'Ensemble des Domaines#

L'examen DCA comprend 55 questions à compléter en 90 minutes. Voici comment les points sont répartis :

DomainePoidsQuestions estiméesDifficulté
Orchestration25%~14 questionsÉlevée
Images & Registry20%~11 questionsMoyenne
Installation & Configuration15%~8 questionsMoyenne
Networking15%~8 questionsÉlevée
Security15%~8 questionsMoyenne
Storage10%~6 questionsBasse
Statistique clé

L'Orchestration et les Images représentent à eux seuls 45% de l'examen. Si tu maîtrises ces deux domaines, tu as déjà presque la moitié des points assurés.

Comment lire ce guide#

Pour chaque domaine, tu trouveras :

  • Ce qui est testé : Les concepts clés à maîtriser
  • Commandes essentielles : Les commandes Docker incontournables
  • Questions types : Des exemples représentatifs du format d'examen
  • Conseils de révision : Comment aborder efficacement le domaine

1. Orchestration (25%)#

L'Orchestration est le domaine le plus lourd de l'examen. Il se concentre sur Docker Swarm, le système d'orchestration natif de Docker.

Ce qui est testé#

  • Initialisation et gestion d'un cluster Swarm
  • Création, mise à jour et scaling de services
  • Rolling updates et rollbacks
  • Gestion des nœuds (managers, workers)
  • Stacks et déploiement via fichiers Compose
  • Placement des containers (contraintes, préférences)
  • Haute disponibilité et quorum des managers

Les 10 commandes essentielles#

bash
# Gestion du cluster
docker swarm init --advertise-addr <IP>
docker swarm join --token <TOKEN> <MANAGER-IP>:2377
docker swarm leave [--force]

# Gestion des nœuds
docker node ls
docker node update --availability drain <NODE>
docker node promote <NODE>
docker node demote <NODE>

# Gestion des services
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>

Questions types#

Q1 : Quelle commande affiche les tâches d'un service spécifique ?

La réponse est docker service ps <SERVICE>. Attention au piège docker service tasks qui n'existe pas.

Q2 : Comment limiter un service aux nœuds avec le label env=production ?

Utilise --constraint node.labels.env==production. Note le double == et le préfixe node.labels..

Q3 : Quel est le nombre minimum de managers pour tolérer la perte d'un manager ?

Il faut 3 managers pour tolérer 1 panne (quorum = 2). La formule est : (N-1)/2 pannes tolérées.

Piège courant

Ne confonds pas docker service scale myapp=5 (correct) avec docker scale myapp=5 (incorrect). La commande scale n'existe qu'au niveau service.

Conseils de révision#

  1. Monte un cluster Swarm de 3 nœuds minimum (1 manager + 2 workers)
  2. Pratique les rolling updates avec différentes configurations
  3. Teste les scénarios de panne : que se passe-t-il quand un manager tombe ?
  4. Maîtrise les contraintes : node.role, node.labels, node.hostname

2. Images & Registry (20%)#

Ce domaine teste ta capacité à créer, optimiser et distribuer des images Docker.

Ce qui est testé#

  • Écriture de Dockerfiles optimisés
  • Multi-stage builds
  • Gestion du build cache
  • Push/pull vers des registries
  • Tagging et versioning
  • Docker Content Trust
  • Inspection et historique des images
Passez de la Théorie à la Pratique
Appliquez ce que vous avez appris avec des scénarios Docker interactifs et des environnements réels.

Best Practices Dockerfile#

dockerfile
# 1. Utiliser une image de base légère
FROM node:18-alpine

# 2. Définir un utilisateur non-root
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# 3. Copier d'abord les fichiers de dépendances (cache)
COPY package*.json ./
RUN npm ci --only=production

# 4. Copier le code source ensuite
COPY --chown=appuser:appgroup . .

# 5. Exposer le port (documentation)
EXPOSE 3000

# 6. Définir l'utilisateur
USER appuser

# 7. Utiliser la forme exec pour CMD
CMD ["node", "server.js"]

Tableau des instructions Dockerfile#

InstructionCrée un layer ?Usage
FROMOuiImage de base
RUNOuiExécuter des commandes
COPYOuiCopier des fichiers
ADDOuiCopier + extraire archives
CMDNonCommande par défaut
ENTRYPOINTNonPoint d'entrée
ENVOuiVariables d'environnement
ARGNonVariables de build
EXPOSENonDocumentation port
USERNonUtilisateur d'exécution
WORKDIROuiRépertoire de travail

Questions types#

Q1 : Quelle instruction permet de copier un fichier depuis un stage précédent ?

COPY --from=<stage> permet de copier depuis un autre stage dans un multi-stage build.

Q2 : Quelle est la différence entre ENTRYPOINT et CMD ?

ENTRYPOINT définit la commande principale (difficile à remplacer), CMD fournit les arguments par défaut (facilement remplaçables).

Q3 : Comment invalider le cache à partir d'une instruction spécifique ?

Modifie le fichier copié avant cette instruction, ou utilise --no-cache pour désactiver tout le cache.

Optimisation du cache

L'ordre des instructions est crucial. Place les instructions qui changent rarement (installation de dépendances système) avant celles qui changent souvent (copie du code source).

Commandes essentielles#

bash
# Build
docker build -t myimage:v1 .
docker build --no-cache -t myimage:v1 .
docker build --target <stage> -t myimage:v1 .

# Tagging et push
docker tag myimage:v1 registry.example.com/myimage:v1
docker push registry.example.com/myimage:v1
docker pull registry.example.com/myimage:v1

# Inspection
docker image history myimage:v1
docker image inspect myimage:v1
docker image ls
docker image prune
Prêt à Essayer par Vous-Même ?
Pratiquez ces concepts Docker dans un environnement réel avec des scénarios pratiques.

3. Installation & Configuration (15%)#

Ce domaine couvre la configuration du daemon Docker et de l'environnement d'exécution.

Ce qui est testé#

  • Installation de Docker sur différents OS
  • Configuration du daemon via daemon.json
  • Storage drivers
  • Logging drivers
  • Gestion des ressources (CPU, mémoire)
  • Configuration réseau du daemon
  • Sécurisation de l'API Docker

Le fichier daemon.json#

Le fichier /etc/docker/daemon.json centralise la configuration du 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#

DriverRecommandéCas d'usage
overlay2✔ OuiLinux moderne (kernel 4.0+)
fuse-overlayfs✔ OuiRootless Docker
btrfsSpécifiqueSystèmes de fichiers btrfs
zfsSpécifiqueSystèmes de fichiers ZFS
devicemapper✗ DépréciéLegacy
aufs✗ DépréciéLegacy
vfs✗ LentDebug uniquement

Logging Drivers#

DriverDescription
json-fileFichiers JSON locaux (défaut)
journaldIntégration systemd journal
syslogServeur syslog
fluentdCollecteur Fluentd
gelfFormat Graylog GELF
awslogsAmazon CloudWatch
gcplogsGoogle Cloud Logging

Questions types#

Q1 : Quelle commande recharge la configuration du daemon sans arrêter les containers ?

sudo systemctl reload docker ou sudo kill -SIGHUP $(pidof dockerd).

Q2 : Quel storage driver est recommandé pour Docker sur Ubuntu 22.04 ?

overlay2 est le driver par défaut et recommandé pour tous les systèmes Linux modernes.

Q3 : Comment vérifier la configuration actuelle du daemon ?

docker info affiche toutes les informations de configuration, y compris le storage driver et le logging driver.


4. Networking (15%)#

Le réseau Docker est l'un des domaines les plus techniques. Il nécessite une bonne compréhension des différents types de réseaux.

Ce qui est testé#

  • Types de réseaux : bridge, host, overlay, macvlan, none
  • Réseaux overlay pour Swarm
  • DNS interne Docker
  • Publication de ports
  • Routing mesh et ingress
  • Configuration réseau des services

Types de réseaux Docker#

TypePortéeUsage
bridgeLocalContainers sur un même hôte
hostLocalPartage du réseau hôte
overlayMulti-hôtesCommunication Swarm
macvlanLocalAdresses MAC dédiées
noneLocalAucun réseau

Schéma conceptuel#

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)          │    │
│  │              Ports publiés: 80, 443              │    │
│  └──────────────────────────────────────────────────┘    │
└──────────────────────────────────────────────────────────┘
Maîtrisez Docker en Pratique
Allez au-delà de la théorie - pratiquez avec de vrais conteneurs et scénarios d'orchestration.

DNS interne Docker#

Docker fournit un serveur DNS intégré (127.0.0.11) qui permet aux containers de se découvrir par nom :

  • Containers : Résolution par nom de container sur les réseaux user-defined
  • Services Swarm : Résolution par nom de service (load-balancing automatique)
  • Tâches : Résolution par <task>.<service>.<stack> pour cibler une tâche spécifique

Questions types#

Q1 : Quel réseau permet aux containers de communiquer entre plusieurs nœuds Swarm ?

Le réseau overlay permet la communication multi-hôtes dans un cluster Swarm.

Q2 : Comment rendre un réseau overlay accessible aux containers standalone ?

Utilise l'option --attachable lors de la création du réseau.

Q3 : Quel est le réseau responsable du load balancing des ports publiés ?

Le réseau ingress gère le routing mesh et distribue les requêtes entre les réplicas.

Commandes essentielles#

bash
# Création de réseaux
docker network create mybridge
docker network create --driver overlay --attachable myoverlay

# Inspection
docker network ls
docker network inspect mynetwork

# Connexion/déconnexion
docker network connect mynetwork mycontainer
docker network disconnect mynetwork mycontainer

5. Security (15%)#

La sécurité est critique en production. Ce domaine couvre les mécanismes de protection de Docker.

Ce qui est testé#

  • Docker Secrets et Configs
  • Docker Content Trust
  • Namespaces et cgroups
  • Capabilities Linux
  • Seccomp et AppArmor
  • Scanning de vulnérabilités
  • Configuration TLS

Docker Secrets#

Les secrets permettent de stocker des données sensibles de manière sécurisée :

bash
# Création
echo "mypassword" | docker secret create db_password -
docker secret create ssl_cert ./cert.pem

# Utilisation dans un service
docker service create \
  --name myapp \
  --secret db_password \
  --secret source=ssl_cert,target=/etc/ssl/cert.pem \
  myimage

# Les secrets sont montés dans /run/secrets/

Docker Content Trust#

Content Trust garantit l'intégrité et l'authenticité des images :

bash
# Activer Content Trust
export DOCKER_CONTENT_TRUST=1

# Signer et pousser une image
docker push myregistry/myimage:v1

# Vérification automatique au pull
docker pull myregistry/myimage:v1

Capabilities Linux#

Docker retire par défaut certaines capabilities dangereuses. Tu peux ajuster :

bash
# Supprimer toutes les capabilities
docker run --cap-drop ALL nginx

# Ajouter une capability spécifique
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx

# Capabilities typiquement supprimées
# SYS_ADMIN, NET_ADMIN, SYS_PTRACE, SYS_MODULE

Questions types#

Q1 : Où sont montés les secrets dans un container de service ?

Dans /run/secrets/<secret_name>, monté en tmpfs (en mémoire).

Q2 : Quelle est la différence entre secrets et configs ?

Les secrets sont chiffrés au repos dans le Raft log, les configs sont stockés en clair.

Q3 : Comment activer Docker Content Trust ?

export DOCKER_CONTENT_TRUST=1 avant les commandes push/pull.

Erreur fréquente

Ne stocke jamais de secrets dans des variables d'environnement (-e PASSWORD=xxx) ou dans les layers d'image (ENV PASSWORD=xxx). Utilise Docker Secrets.

Prêt à Essayer par Vous-Même ?
Pratiquez ces concepts Docker dans un environnement réel avec des scénarios pratiques.

6. Storage (10%)#

Bien que représentant seulement 10% de l'examen, le storage est essentiel pour les applications avec données persistantes.

Ce qui est testé#

  • Volumes Docker
  • Bind mounts
  • tmpfs mounts
  • Volume drivers
  • Backup et restauration

Volumes vs Bind Mounts vs tmpfs#

TypeGéré par DockerCas d'usage
Volume✔ OuiDonnées persistantes, partage entre containers
Bind mount✗ NonDéveloppement, accès à des fichiers hôte spécifiques
tmpfs✔ OuiDonnées temporaires sensibles (en mémoire)

Syntaxes de montage#

bash
# Syntaxe -v (courte)
docker run -v myvolume:/app/data nginx
docker run -v /host/path:/container/path nginx
docker run -v /app/data nginx  # Volume anonyme

# Syntaxe --mount (explicite, recommandée)
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

# Options courantes
docker run --mount type=volume,source=myvolume,target=/data,readonly nginx
docker run -v myvolume:/data:ro nginx

Commandes essentielles#

bash
# Gestion des volumes
docker volume create mydata
docker volume ls
docker volume inspect mydata
docker volume rm mydata
docker volume prune

# Backup d'un volume
docker run --rm \
  -v mydata:/source:ro \
  -v $(pwd):/backup \
  alpine tar czf /backup/mydata.tar.gz -C /source .

# Restauration
docker run --rm \
  -v mydata:/target \
  -v $(pwd):/backup:ro \
  alpine tar xzf /backup/mydata.tar.gz -C /target

Questions types#

Q1 : Quelle est la différence principale entre un volume et un bind mount ?

Un volume est géré par Docker (dans /var/lib/docker/volumes/), un bind mount pointe vers un chemin arbitraire de l'hôte.

Q2 : Comment monter un volume en lecture seule avec --mount ?

Ajoute l'option readonly : --mount type=volume,source=mydata,target=/data,readonly

Q3 : Quelle commande supprime les volumes non utilisés ?

docker volume prune supprime tous les volumes orphelins.


Stratégie de Révision#

Tu connais maintenant les 6 domaines. Voici comment optimiser ta préparation.

Ordre de révision recommandé#

  1. Orchestration (25%) - Le plus important, commence par là
  2. Images & Registry (20%) - Fondamental pour comprendre Docker
  3. Networking (15%) - Technique mais essentiel
  4. Security (15%) - Concepts clés à mémoriser
  5. Installation & Config (15%) - Plus théorique, révisable rapidement
  6. Storage (10%) - Le plus simple, garde-le pour la fin

Répartition du temps de révision#

DomainePoids examenTemps recommandé
Orchestration25%40% du temps
Images & Registry20%25% du temps
Networking + Security + Installation45%30% du temps
Storage10%5% du temps
Conseil

Concentre 65% de ton temps sur Orchestration et Images. Ce sont les domaines où la pratique hands-on fait la plus grande différence, et ils représentent 45% de l'examen.

Checklist avant l'examen#

  • Je peux initialiser et gérer un cluster Swarm de 3 nœuds
  • Je peux écrire un Dockerfile multi-stage optimisé
  • Je comprends les différents types de réseaux Docker
  • Je sais créer et utiliser des secrets Docker
  • Je connais les options de daemon.json
  • Je maîtrise la différence entre volumes et bind mounts

Ressources complémentaires#


Conclusion#

Les 6 domaines du DCA testent des compétences complémentaires :

  • Orchestration et Networking : La pratique hands-on est indispensable
  • Images et Security : Comprendre les concepts et best practices
  • Installation et Storage : Plus théoriques, mais des points "faciles"

Avec une préparation structurée et beaucoup de pratique, tu as toutes les cartes en main pour réussir l'examen.

Prêt à passer à l'action ? Entraîne-toi avec des scénarios pratiques et des quiz au format DOMC pour maximiser tes chances de succès.

Les 6 Domaines du DCA : Tout Ce Qu'il Faut Savoir