Die 6 DCA-Domänen: Alles Was Du Wissen Musst
certificationintermediate

Die 6 DCA-Domänen: Alles Was Du Wissen Musst

Vollständiger Leitfaden zu den 6 Domänen der Docker Certified Associate Prüfung: Orchestration, Images, Installation, Networking, Security und Storage. Wichtige Befehle und Lernstrategien.

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

Die 6 DCA-Domänen: Alles Was Du Wissen Musst

Die Docker Certified Associate Prüfung umfasst 6 verschiedene Domänen, jede mit einem unterschiedlichen Gewicht in der Gesamtpunktzahl. Das Verständnis dieser Verteilung ist essentiell, um deine Vorbereitung zu optimieren.

Dieser Artikel erläutert jede Domäne im Detail: was geprüft wird, welche Befehle du beherrschen musst, und Beispiele typischer Fragen. Am Ende hast du eine klare Vorstellung davon, was dich erwartet, und eine effektive Lernstrategie.


Überblick über die Domänen#

Die DCA-Prüfung besteht aus 55 Fragen, die in 90 Minuten zu beantworten sind. So sind die Punkte verteilt:

DomäneGewichtGeschätzte FragenSchwierigkeit
Orchestration25%~14 FragenHoch
Images & Registry20%~11 FragenMittel
Installation & Configuration15%~8 FragenMittel
Networking15%~8 FragenHoch
Security15%~8 FragenMittel
Storage10%~6 FragenNiedrig
Wichtige Statistik

Orchestration und Images machen zusammen 45% der Prüfung aus. Wenn du diese beiden Domänen beherrschst, hast du bereits fast die Hälfte der Punkte sicher.

Wie du diesen Leitfaden liest#

Für jede Domäne findest du:

  • Was geprüft wird: Schlüsselkonzepte zum Beherrschen
  • Wichtige Befehle: Unverzichtbare Docker-Befehle
  • Typische Fragen: Repräsentative Beispiele des Prüfungsformats
  • Lerntipps: Wie du die Domäne effektiv angehst

1. Orchestration (25%)#

Orchestration ist die gewichtigste Domäne der Prüfung. Sie konzentriert sich auf Docker Swarm, Dockers natives Orchestrierungssystem.

Was geprüft wird#

  • Initialisierung und Verwaltung eines Swarm-Clusters
  • Erstellung, Aktualisierung und Skalierung von Services
  • Rolling Updates und Rollbacks
  • Node-Verwaltung (Manager, Worker)
  • Stacks und Deployment über Compose-Dateien
  • Container-Platzierung (Constraints, Preferences)
  • Hochverfügbarkeit und Manager-Quorum

Die 10 wichtigsten Befehle#

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

# Node-Verwaltung
docker node ls
docker node update --availability drain <NODE>
docker node promote <NODE>
docker node demote <NODE>

# Service-Verwaltung
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>

Typische Fragen#

F1: Welcher Befehl zeigt die Tasks eines bestimmten Services an?

Die Antwort ist docker service ps <SERVICE>. Vorsicht vor der Falle docker service tasks, das existiert nicht.

F2: Wie beschränkst du einen Service auf Nodes mit dem Label env=production?

Verwende --constraint node.labels.env==production. Beachte das doppelte == und das Präfix node.labels..

F3: Was ist die Mindestanzahl an Managern, um den Ausfall eines Managers zu tolerieren?

Du brauchst 3 Manager, um 1 Ausfall zu tolerieren (Quorum = 2). Die Formel lautet: (N-1)/2 tolerierte Ausfälle.

Häufige Falle

Verwechsle nicht docker service scale myapp=5 (korrekt) mit docker scale myapp=5 (falsch). Der scale-Befehl existiert nur auf Service-Ebene.

Lerntipps#

  1. Richte einen Swarm-Cluster mit mindestens 3 Nodes ein (1 Manager + 2 Worker)
  2. Übe Rolling Updates mit verschiedenen Konfigurationen
  3. Teste Ausfallszenarien: Was passiert, wenn ein Manager ausfällt?
  4. Beherrsche Constraints: node.role, node.labels, node.hostname

2. Images & Registry (20%)#

Diese Domäne prüft deine Fähigkeit, Docker-Images zu erstellen, zu optimieren und zu verteilen.

Was geprüft wird#

  • Schreiben optimierter Dockerfiles
  • Multi-Stage Builds
  • Build-Cache-Verwaltung
  • Push/Pull zu Registries
  • Tagging und Versionierung
  • Docker Content Trust
  • Image-Inspektion und History
Setzen Sie Theorie in Praxis Um
Wenden Sie das Gelernte mit interaktiven Docker-Szenarien und echten Umgebungen an.

Dockerfile Best Practices#

dockerfile
# 1. Leichtes Basis-Image verwenden
FROM node:18-alpine

# 2. Non-Root-Benutzer definieren
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# 3. Zuerst Abhängigkeitsdateien kopieren (Cache)
COPY package*.json ./
RUN npm ci --only=production

# 4. Dann Quellcode kopieren
COPY --chown=appuser:appgroup . .

# 5. Port exponieren (Dokumentation)
EXPOSE 3000

# 6. Benutzer setzen
USER appuser

# 7. Exec-Form für CMD verwenden
CMD ["node", "server.js"]

Dockerfile-Anweisungen Tabelle#

AnweisungErstellt Layer?Verwendung
FROMJaBasis-Image
RUNJaBefehle ausführen
COPYJaDateien kopieren
ADDJaKopieren + Archive entpacken
CMDNeinStandardbefehl
ENTRYPOINTNeinEinstiegspunkt
ENVJaUmgebungsvariablen
ARGNeinBuild-Variablen
EXPOSENeinPort-Dokumentation
USERNeinAusführungsbenutzer
WORKDIRJaArbeitsverzeichnis

Typische Fragen#

F1: Welche Anweisung ermöglicht das Kopieren einer Datei aus einer vorherigen Stage?

COPY --from=<stage> ermöglicht das Kopieren aus einer anderen Stage in einem Multi-Stage Build.

F2: Was ist der Unterschied zwischen ENTRYPOINT und CMD?

ENTRYPOINT definiert den Hauptbefehl (schwer zu ersetzen), CMD liefert Standardargumente (leicht ersetzbar).

F3: Wie invalidierst du den Cache ab einer bestimmten Anweisung?

Ändere die Datei, die vor dieser Anweisung kopiert wird, oder verwende --no-cache, um den gesamten Cache zu deaktivieren.

Cache-Optimierung

Die Reihenfolge der Anweisungen ist entscheidend. Platziere Anweisungen, die sich selten ändern (Systemabhängigkeiten installieren), vor denen, die sich häufig ändern (Quellcode kopieren).

Wichtige Befehle#

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

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

# Inspektion
docker image history myimage:v1
docker image inspect myimage:v1
docker image ls
docker image prune
Bereit, es Selbst Auszuprobieren?
Üben Sie diese Docker-Konzepte in einer echten Umgebung mit praktischen Szenarien.

3. Installation & Configuration (15%)#

Diese Domäne behandelt die Docker-Daemon-Konfiguration und die Laufzeitumgebung.

Was geprüft wird#

  • Docker-Installation auf verschiedenen Betriebssystemen
  • Daemon-Konfiguration über daemon.json
  • Storage Drivers
  • Logging Drivers
  • Ressourcenverwaltung (CPU, Speicher)
  • Daemon-Netzwerkkonfiguration
  • Absicherung der Docker-API

Die daemon.json Datei#

Die Datei /etc/docker/daemon.json zentralisiert die Daemon-Konfiguration:

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#

DriverEmpfohlenAnwendungsfall
overlay2✔ JaModernes Linux (Kernel 4.0+)
fuse-overlayfs✔ JaRootless Docker
btrfsSpezifischBtrfs-Dateisysteme
zfsSpezifischZFS-Dateisysteme
devicemapper✗ VeraltetLegacy
aufs✗ VeraltetLegacy
vfs✗ LangsamNur für Debug

Logging Drivers#

DriverBeschreibung
json-fileLokale JSON-Dateien (Standard)
journaldSystemd-Journal-Integration
syslogSyslog-Server
fluentdFluentd-Collector
gelfGraylog GELF-Format
awslogsAmazon CloudWatch
gcplogsGoogle Cloud Logging

Typische Fragen#

F1: Welcher Befehl lädt die Daemon-Konfiguration neu, ohne Container zu stoppen?

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

F2: Welcher Storage Driver wird für Docker auf Ubuntu 22.04 empfohlen?

overlay2 ist der Standard- und empfohlene Driver für alle modernen Linux-Systeme.

F3: Wie überprüfst du die aktuelle Daemon-Konfiguration?

docker info zeigt alle Konfigurationsinformationen an, einschließlich Storage Driver und Logging Driver.


4. Networking (15%)#

Docker-Networking ist eine der technischsten Domänen. Sie erfordert ein gutes Verständnis der verschiedenen Netzwerktypen.

Was geprüft wird#

  • Netzwerktypen: bridge, host, overlay, macvlan, none
  • Overlay-Netzwerke für Swarm
  • Internes Docker-DNS
  • Port-Publishing
  • Routing Mesh und Ingress
  • Service-Netzwerkkonfiguration

Docker-Netzwerktypen#

TypReichweiteVerwendung
bridgeLokalContainer auf demselben Host
hostLokalHost-Netzwerk teilen
overlayMulti-HostSwarm-Kommunikation
macvlanLokalDedizierte MAC-Adressen
noneLokalKein Netzwerk

Konzeptdiagramm#

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)              
           Veröffentlichte Ports: 80, 443               
  └──────────────────────────────────────────────────┘    
└──────────────────────────────────────────────────────────┘
Meistern Sie Docker Praktisch
Gehen Sie über die Theorie hinaus - üben Sie mit echten Containern und Orchestrierungsszenarien.

Internes Docker-DNS#

Docker stellt einen integrierten DNS-Server (127.0.0.11) bereit, der Containern ermöglicht, sich gegenseitig per Namen zu finden:

  • Container: Namensauflösung auf benutzerdefinierten Netzwerken
  • Swarm-Services: Auflösung nach Service-Namen (automatisches Load-Balancing)
  • Tasks: Auflösung über <task>.<service>.<stack> für spezifische Tasks

Typische Fragen#

F1: Welches Netzwerk ermöglicht die Kommunikation zwischen Containern auf mehreren Swarm-Nodes?

Das overlay-Netzwerk ermöglicht Multi-Host-Kommunikation in einem Swarm-Cluster.

F2: Wie machst du ein Overlay-Netzwerk für Standalone-Container zugänglich?

Verwende die Option --attachable beim Erstellen des Netzwerks.

F3: Welches Netzwerk ist für das Load-Balancing veröffentlichter Ports verantwortlich?

Das ingress-Netzwerk verwaltet das Routing Mesh und verteilt Anfragen auf die Replikas.

Wichtige Befehle#

bash
# Netzwerke erstellen
docker network create mybridge
docker network create --driver overlay --attachable myoverlay

# Inspektion
docker network ls
docker network inspect mynetwork

# Verbinden/Trennen
docker network connect mynetwork mycontainer
docker network disconnect mynetwork mycontainer

5. Security (15%)#

Sicherheit ist in der Produktion kritisch. Diese Domäne behandelt Dockers Schutzmechanismen.

Was geprüft wird#

  • Docker Secrets und Configs
  • Docker Content Trust
  • Namespaces und cgroups
  • Linux Capabilities
  • Seccomp und AppArmor
  • Schwachstellen-Scanning
  • TLS-Konfiguration

Docker Secrets#

Secrets ermöglichen die sichere Speicherung sensibler Daten:

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

# Verwendung in einem Service
docker service create \
  --name myapp \
  --secret db_password \
  --secret source=ssl_cert,target=/etc/ssl/cert.pem \
  myimage

# Secrets werden in /run/secrets/ gemountet

Docker Content Trust#

Content Trust gewährleistet Image-Integrität und -Authentizität:

bash
# Content Trust aktivieren
export DOCKER_CONTENT_TRUST=1

# Image signieren und pushen
docker push myregistry/myimage:v1

# Automatische Verifizierung beim Pull
docker pull myregistry/myimage:v1

Linux Capabilities#

Docker entfernt standardmäßig bestimmte gefährliche Capabilities. Du kannst anpassen:

bash
# Alle Capabilities entfernen
docker run --cap-drop ALL nginx

# Spezifische Capability hinzufügen
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx

# Typischerweise entfernte Capabilities
# SYS_ADMIN, NET_ADMIN, SYS_PTRACE, SYS_MODULE

Typische Fragen#

F1: Wo werden Secrets in einem Service-Container gemountet?

In /run/secrets/<secret_name>, als tmpfs gemountet (im Speicher).

F2: Was ist der Unterschied zwischen Secrets und Configs?

Secrets sind im Raft-Log verschlüsselt gespeichert, Configs werden im Klartext gespeichert.

F3: Wie aktivierst du Docker Content Trust?

export DOCKER_CONTENT_TRUST=1 vor Push/Pull-Befehlen.

Häufiger Fehler

Speichere niemals Secrets in Umgebungsvariablen (-e PASSWORD=xxx) oder in Image-Layern (ENV PASSWORD=xxx). Verwende Docker Secrets.

Bereit, es Selbst Auszuprobieren?
Üben Sie diese Docker-Konzepte in einer echten Umgebung mit praktischen Szenarien.

6. Storage (10%)#

Obwohl sie nur 10% der Prüfung ausmacht, ist Storage essentiell für Anwendungen mit persistenten Daten.

Was geprüft wird#

  • Docker Volumes
  • Bind Mounts
  • tmpfs Mounts
  • Volume Drivers
  • Backup und Wiederherstellung

Volumes vs Bind Mounts vs tmpfs#

TypVon Docker verwaltetAnwendungsfall
Volume✔ JaPersistente Daten, Teilen zwischen Containern
Bind Mount✗ NeinEntwicklung, Zugriff auf spezifische Host-Dateien
tmpfs✔ JaSensible temporäre Daten (im Speicher)

Mount-Syntax#

bash
# -v Syntax (kurz)
docker run -v myvolume:/app/data nginx
docker run -v /host/path:/container/path nginx
docker run -v /app/data nginx  # Anonymes Volume

# --mount Syntax (explizit, empfohlen)
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

# Häufige Optionen
docker run --mount type=volume,source=myvolume,target=/data,readonly nginx
docker run -v myvolume:/data:ro nginx

Wichtige Befehle#

bash
# Volume-Verwaltung
docker volume create mydata
docker volume ls
docker volume inspect mydata
docker volume rm mydata
docker volume prune

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

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

Typische Fragen#

F1: Was ist der Hauptunterschied zwischen einem Volume und einem Bind Mount?

Ein Volume wird von Docker verwaltet (in /var/lib/docker/volumes/), ein Bind Mount zeigt auf einen beliebigen Host-Pfad.

F2: Wie mountest du ein Volume schreibgeschützt mit --mount?

Füge die Option readonly hinzu: --mount type=volume,source=mydata,target=/data,readonly

F3: Welcher Befehl entfernt nicht verwendete Volumes?

docker volume prune entfernt alle verwaisten Volumes.


Lernstrategie#

Du kennst nun die 6 Domänen. Hier erfährst du, wie du deine Vorbereitung optimierst.

Empfohlene Lernreihenfolge#

  1. Orchestration (25%) - Am wichtigsten, beginne hier
  2. Images & Registry (20%) - Grundlegend für das Docker-Verständnis
  3. Networking (15%) - Technisch, aber essentiell
  4. Security (15%) - Schlüsselkonzepte zum Merken
  5. Installation & Config (15%) - Theoretischer, schnell wiederholbar
  6. Storage (10%) - Am einfachsten, hebe es dir für zuletzt auf

Zeitverteilung beim Lernen#

DomänePrüfungsgewichtEmpfohlene Zeit
Orchestration25%40% der Zeit
Images & Registry20%25% der Zeit
Networking + Security + Installation45%30% der Zeit
Storage10%5% der Zeit
Tipp

Konzentriere 65% deiner Zeit auf Orchestration und Images. Das sind die Domänen, bei denen praktische Übung den größten Unterschied macht, und sie machen 45% der Prüfung aus.

Checkliste vor der Prüfung#

  • Ich kann einen 3-Node Swarm-Cluster initialisieren und verwalten
  • Ich kann ein optimiertes Multi-Stage Dockerfile schreiben
  • Ich verstehe die verschiedenen Docker-Netzwerktypen
  • Ich weiß, wie man Docker Secrets erstellt und verwendet
  • Ich kenne die daemon.json Optionen
  • Ich beherrsche den Unterschied zwischen Volumes und Bind Mounts

Zusätzliche Ressourcen#


Fazit#

Die 6 DCA-Domänen prüfen komplementäre Fähigkeiten:

  • Orchestration und Networking: Praktische Übung ist unverzichtbar
  • Images und Security: Konzepte und Best Practices verstehen
  • Installation und Storage: Theoretischer, aber "einfache" Punkte

Mit strukturierter Vorbereitung und viel Übung hast du alles, was du brauchst, um die Prüfung zu bestehen.

Bereit für die Aktion? Trainiere mit praktischen Szenarien und DOMC-Format-Quizzen, um deine Erfolgschancen zu maximieren.

Die 6 DCA-Domänen: Alles Was Du Wissen Musst