Veröffentlicht am

Docker lernen: Die Roadmap vom ersten Container bis zur Produktion

Teilen:
Authors

Docker lernen: Die Roadmap vom ersten Container bis zur Produktion

TL;DR

  • Docker-Container sind wie perfekt gepackte Koffer für Ihren Code — alles drin, was die Reise braucht, nichts mehr, nichts weniger. Docker löst das berühmte „Es funktioniert auf meinem Rechner"-Problem, indem Anwendung, Abhängigkeiten und Konfiguration in ein standardisiertes Paket kommen, das überall gleich läuft.
  • Die Roadmap in 7 Schritten: Pull & Run → eigenes Dockerfile → Networking → Docker Compose → Volumes → Produktions-Best-Practices → CI/CD.
  • docker pull postgres und eine Datenbank läuft in Sekunden — fertige Images sparen Wochen an Setup-Zeit.
  • Docker Compose ist der Einstieg in Configuration-as-Code — ein Kernprinzip von DevOps.
  • Docker ist der Einstieg — Kubernetes der natürliche nächste Schritt. Bei Hunderten Containern scheitern Docker und Compose: Es fehlen Auto-Restart, Skalierung, Rolling Updates und Load Balancing.

Das Problem, das Docker löst

„It works on my machine"

Lokal Node 14, Produktion Node 16 — die App läuft lokal, bricht auf dem Server. Umgebungsunterschiede sind die klassische Fehlerquelle in der Softwareentwicklung.

Die Lösung

Docker packt Anwendung, Bibliotheken, Abhängigkeiten und Konfiguration in einen Container, der überall identisch läuft — lokal, Test, Produktion. Damit wird die Umgebungs-Varianz komplett eliminiert.

Der unschätzbare Vorteil: Fertige Images

Für fast jede Software gibt es offizielle Images (MySQL, PostgreSQL, MongoDB, Redis, RabbitMQ, Kafka, Nginx, Apache). Statt Software manuell zu installieren und zu konfigurieren:

# Eine Datenbank läuft in Sekunden statt Stunden Setup
docker pull postgres
docker run -d -p 5432:5432 postgres

Docker Hub ist wie GitHub, nur für Container-Images. Das reduziert die Zeit bis zum ersten produktiven Einsatz neuer Technologien drastisch.


Die Roadmap in 7 Schritten

Schritt 1–2: Grund-Kommandos (70–80 % des Alltags)

Die Basis-Kommandos decken den größten Teil des täglichen Umgangs ab:

docker pull <image>   # Image ziehen
docker run <image>    # Container starten, Port konfigurieren
docker ps             # laufende Container anzeigen
docker stop <id>      # Container stoppen
docker rm <id>        # Container entfernen
docker images         # lokale Images listen

Empfehlung: Starten Sie mit leichtgewichtigen Images (Nginx, Redis). Pull, run, interagieren — das gibt Hands-on-Praxis ohne eigenes Bauen.

Schritt 3: Das eigene Dockerfile

Ein Dockerfile ist das Rezept für Ihr Image. Die ~70 % jedes Dockerfiles sind immer gleich:

# Basis-Image
FROM node:20

# Arbeitsverzeichnis
WORKDIR /app

# Abhängigkeiten zuerst kopieren (Layer-Caching!)
COPY package*.json ./
RUN npm install

# Quellcode kopieren
COPY . .

# Port freigeben
EXPOSE 3000

# Dienst starten
CMD ["npm", "start"]

Lern-Tipp: Nehmen Sie eine kleine, realistische App und dockerisieren Sie sie. Statt Befehle auswendig zu lernen, verstehen Sie durch das Projekt, was wozu dient.

Schritt 4: Docker-Networking

Real-World-Apps brauchen mehrere Container (Frontend, Backend, DB, Cache), die kommunizieren:

docker network create myapp
docker run -d --network myapp --name api my-api
docker run -d --network myapp --name db postgres

Container im selben Netz reden per Container-Name statt per IP (z. B. api statt 10.0.0.5). Das ist die Basis für Microservices-Kommunikation.

Schritt 5: Docker Compose

Manuelle Kommandos werden repetitiv und fehleranfällig. Docker Compose definiert alle Container deklarativ in einer Datei:

services:
  api:
    build: .
    ports:
      - '3000:3000'
    depends_on:
      - db
  db:
    image: postgres:16
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:
docker compose up      # alles starten
docker compose down    # alles aufräumen

Compose erstellt das Netzwerk automatisch. Das ist der Einstieg in Configuration-as-Code — ein Kernprinzip von DevOps.

Schritt 6: Volumes (Daten persistieren)

Container sind ephemeral — bei Löschung sind die Daten weg. Das ist für Datenbanken fatal.

Docker Volumes sind die persistente Brücke:

  • Ein Volume = dedizierter Speicherbereich auf dem Host, verbunden mit einem Container-Pfad.
  • Container weg → Daten bleiben. Neuer Container → ans selbe Volume angeschlossen → alle Daten wieder da.

Im Compose-Beispiel oben ist db-data bereits als Volume definiert — so bleibt alles „as code".

Schritt 7: Produktions-Best-Practices

Best PracticeWarum
Exakte Image-Tags statt latestlatest ändert sich jederzeit — bricht Produktion über Nacht
RUN-Befehle kombinierenWeniger Layer = kleineres Image, kleinere Angriffsfläche
Multi-Stage-BuildsVon 1 GB auf unter 100 MB — nur das Nötige ins Final-Image
Nicht als Root laufenRoot = Admin-Rechte für jeden Exploit; dedizierter User
Images regelmäßig scannenNeue CVEs täglich; Docker Scout im CI/CD einbinden

Der natürliche nächste Schritt: Kubernetes

Bei Hunderten Containern scheitern Docker und Docker Compose — es fehlen Auto-Restart, Skalierung, Rolling Updates und Load Balancing. Genau dafür ist Kubernetes da: der Orchestrator, der Container über Hunderte Server automatisch verwaltet.

KriteriumDocker / ComposeKubernetes
SkalierungManuell, begrenztAutomatisch (HPA, Cluster-Autoscaler)
Auto-RestartCompose-Ebene, begrenztSelf-Healing, gewünschter Zustand
Rolling UpdatesNeinJa, mit Rollbacks
Load BalancingBasicBuilt-in (Services, Ingress)
Geeignet fürEinzelne Services, kleine AppsHunderte Container, HA, Multi-Cloud

Docker-Grundlagen sind das Fundament, auf dem Kubernetes aufsetzt — wer Images, Volumes und Networking versteht, versteht, was der Orchestrator automatisiert.


Lessons Learned aus der Praxis

  1. Geduld mit den Grundlagen: Wissenslücken rächen sich später. Ein solides Fundament macht alles Weitere einfacher.
  2. latest ist eine Zeitbombe: Immer exakte Tags in Produktion — nie latest.
  3. Volumes nicht vergessen: Ohne Persistenz sind Daten weg, sobald der Container stirbt.
  4. Sicherheit beginnt im Image: Root-Verbot, Multi-Stage, Scans — nicht erst in Produktion denken.
  5. Docker ist nicht für alles: Bei Skalierung braucht es Kubernetes — und dessen Betrieb ist eine eigene Disziplin.

Fazit

Docker ist der Einstieg in die Containerisierung — und die Roadmap ist klar strukturiert:

  1. Pull & Run — fertige Images sofort nutzen.
  2. Eigenes Dockerfile — das Rezept für Ihr Image.
  3. Networking & Compose — mehrere Container als Code.
  4. Volumes — Daten überleben Container-Neustarts.
  5. Produktions-Best-Practices & Kubernetes — vom Container zur betriebenen Plattform.

FAQ

Muss ich Docker lernen, bevor ich Kubernetes lerne? Ja, zumindest die Konzepte (Images, Container, Volumes, Networking). Kubernetes baut direkt auf Docker-Containern auf.

Was ist der größte Anfängerfehler? latest-Tags und vergessene Volumes. Beides führt zu brüchigen oder datenverlierenden Setups.

Reicht Docker für unser Unternehmen? Für einzelne Services oder kleine Apps: oft ja. Für Skalierung, HA und viele Workloads: Kubernetes. Eine ehrliche Einordnung schützt vor unnötiger Komplexität.

Was ist der Unterschied zwischen Image und Container? Ein Image ist die unveränderliche Blaupause, ein Container die laufende Instanz davon. Aus einem Image können viele Container entstehen.


Verwandte Artikel

📖 Verwandte Artikel

Weitere interessante Beiträge zu ähnlichen Themen