Zum Inhalt springen

Docker erklärt: Vorteile, Nachteile & wann sich Container lohnen

Docker hat die Software-Entwicklung der letzten 10 Jahre umgekrempelt — von der lokalen Dev-Umgebung bis zu Produktions-Infrastruktur. Doch was genau ist Docker, wo lohnt sich der Container-Einsatz, und wo sind die Stolperfallen? Hier ein praxisnaher Überblick — mit konkreten Beispielen, ehrlichen Nachteilen und einem Entscheidungs-Framework für KMU und Selbstständige.

Was ist Docker?

Docker ist eine Open-Source-Plattform, die Anwendungen samt allen Abhängigkeiten in Containern verpackt. Ein Container ist eine isolierte Laufzeit-Umgebung — die Anwendung läuft darin so, wie sie laufen soll, unabhängig vom darunterliegenden System.

Analog zur Frachtschifffahrt: Ein Standard-Container kann auf einem LKW, einem Schiff oder einem Zug transportiert werden — der Inhalt bleibt gleich, die Transport-Infrastruktur ist austauschbar. Genauso läuft ein Docker-Container auf einem Entwickler-Laptop, einem Test-Server, oder bei Hetzner in der Cloud — immer identisch.

Technisch: Container teilen sich den Linux-Kernel des Host-Systems (anders als virtuelle Maschinen, die ein komplettes Gast-OS booten). Das macht sie deutlich leichtgewichtiger — ein Container startet in Millisekunden, eine VM in Minuten.

Docker vs. virtuelle Maschinen — der praktische Vergleich

Der häufigste Vergleich, und einer mit klaren Trade-offs:

Docker-ContainerVirtuelle Maschine
StartzeitMillisekundenMinuten
RessourcenGeteilter Kernel, ~MB RAMEigenes OS, ~GB RAM
IsolationProcess-Level (Linux Namespaces)Hardware-Level (Hypervisor)
PortabilitätImage läuft überall mit DockerImage meist hypervisor-spezifisch
SicherheitGeringer (Kernel geteilt)Höher (kompletter OS-Stack isoliert)
Use-CaseMicroservices, Dev-Umgebung, schnelle DeploymentsLegacy-Systeme, kompletter Server-Stack, Mehrere OS auf einer Maschine

Faustregel: VMs für komplette Server (z.B. Windows-Domain-Controller, Legacy-Anwendung mit speziellem OS), Container für Anwendungen (Webserver, Datenbank, API, Mautic, Nextcloud, n8n). In der Praxis kommen sie oft kombiniert vor: VM als Basis, darauf läuft Docker.

Vorteile von Docker

  • Konsistenz: Das berühmte „läuft auf meinem Rechner“-Problem verschwindet. Dev, Staging und Produktion laufen mit identischen Images.
  • Schnelle Deployments: Ein neues Release ist ein Image-Tag-Update. Rollback genauso: alten Tag wieder ziehen.
  • Ressourceneffizienz: Auf einem Server laufen problemlos 20 Container — vergleichbar mit 5 VMs auf der gleichen Hardware.
  • Horizontale Skalierung: Mehr Last? Mehr Container starten. Mit Docker Compose oder Kubernetes orchestriert.
  • Reproduzierbarkeit: Das Dockerfile dokumentiert die komplette Umgebung. Neue Entwickler:innen sind in 5 Minuten produktiv.
  • Ecosystem: Docker Hub bietet fertige Images für PostgreSQL, Redis, n8n, Nextcloud, Mautic und Tausende weitere Tools — direkt einsatzbereit.

Nachteile von Docker

  • Komplexität bei wachsenden Setups: Wenn aus 3 Containern 30 werden, brauchst du Orchestrierung (Docker Compose, Swarm, Kubernetes). Die Lernkurve ist steil.
  • Sicherheit teilt den Kernel: Container sind weniger isoliert als VMs. Ein Kernel-Exploit kann theoretisch alle Container auf einem Host betreffen. Für hochsensitive Workloads ist VM-Isolation sicherer.
  • Storage-Management: Volumes, Bind Mounts, Network Storage — wer das chaotisch macht, verliert Daten beim Container-Delete. Schmerzhaft.
  • Image-Bloat: Ein unoptimiertes Node.js-Image kann 1+ GB groß sein. Schlechte Layer-Strategie führt zu langsamem Build und teuren Registry-Kosten.
  • Persistente Datenbanken in Containern: Möglich, aber heikel. Für Produktions-Datenbanken oft besser auf dedizierter Maschine (oder Managed Service).
  • Windows/Mac-Native Performance: Docker läuft am besten unter Linux. Auf macOS und Windows wird es durch eine VM virtualisiert — spürbar langsamere File-I/O, höherer RAM-Verbrauch.

Wann Docker Sinn macht — und wann nicht

Klare Entscheidungs-Hilfe statt Tech-Hype:

Docker passt sehr gut bei…

  • Web-Applikationen, APIs, Microservices mit klaren Boundaries
  • Self-Hosting von Open-Source-Tools (Nextcloud, n8n, Mautic, Grafana, Matomo)
  • Dev-Umgebungen, die exakt die Produktion spiegeln sollen
  • CI/CD-Pipelines mit reproduzierbaren Builds
  • Teams mit mehreren Entwickler:innen und unterschiedlichen Setups (Linux/Mac/Windows)

Docker ist eher problematisch bei…

  • GUI-Anwendungen (technisch möglich, praktisch umständlich)
  • Hochsensitiven Datenbanken mit strikten Compliance-Anforderungen
  • Sehr ressourcenintensiven Single-Workloads (HPC, ML-Training auf GPU)
  • Teams ohne jegliches Linux-/Container-Know-how und kein Budget für Einarbeitung
  • Einzel-Anwendungen, die problemlos als Service auf einem Server laufen — manchmal ist systemctl enable einfacher als docker compose up

Docker-Sicherheit — was du beachten musst

Container sind nicht out-of-the-box sicher. Die wichtigsten Härtungs-Maßnahmen:

  • Niemals als root laufen lassen. Im Dockerfile: USER appuser setzen — Container-Prozesse laufen dann unter unprivilegierter UID.
  • Image-Quellen prüfen. Nur Official Images oder Images von verifizierten Publishern. docker scan oder Trivy für CVE-Checks.
  • Read-only Filesystem wo möglich — --read-only Flag oder read_only: true in Docker Compose.
  • Network-Isolation. Nur die Ports exposen, die wirklich gebraucht werden. Container-zu-Container-Kommunikation via internem Bridge-Network.
  • Secrets nicht ins Image bauen. Niemals API-Keys, DB-Passwörter in Dockerfile oder Image-Layer. Stattdessen Docker Secrets, Env-Vars oder externe Secret-Manager (Bitwarden, Hashicorp Vault).
  • Regelmäßige Updates. Base-Images monatlich rebuilden — Sicherheitspatches kommen meist über die Distro.

Erste Schritte mit Docker

Wenn du Docker ausprobieren willst — die absoluten Basics:

# Docker installieren (Linux)
curl -fsSL https://get.docker.com | sh

# Ersten Container starten — Hello World
docker run hello-world

# Web-Server (nginx) im Hintergrund starten, Port 8080 mappen
docker run -d -p 8080:80 --name web nginx

# Laufende Container anzeigen
docker ps

# Container stoppen und löschen
docker stop web && docker rm web

# Komplettes Setup mit mehreren Containern via Compose
docker compose up -d

Für realistische Projekte: Dockerfile + docker-compose.yml sind die Standards. Empfohlene Tools: Portainer (Web-UI für Container-Management) oder Coolify (Self-hosted Heroku-Alternative für Docker-Deployments).

Häufige Fragen zu Docker

Was ist der Unterschied zwischen Docker und Kubernetes?

Docker ist die Container-Runtime — es startet einzelne Container. Kubernetes (K8s) orchestriert hunderte Container über mehrere Maschinen hinweg: Auto-Skalierung, Load-Balancing, Self-Healing. Für kleine Setups (1-2 Server, ≤20 Container) reicht Docker Compose. Für große verteilte Systeme braucht es Kubernetes oder Alternativen wie Docker Swarm oder Nomad.

Ist Docker kostenlos?

Docker Engine (die Container-Runtime) ist Open-Source und kostenlos. Docker Desktop (die UI für Mac/Windows) ist für persönliche Nutzung und kleine Teams (<250 Mitarbeiter, <$10M Umsatz) kostenlos. Größere Unternehmen brauchen eine bezahlte Lizenz oder weichen auf Alternativen wie Podman oder Rancher Desktop aus.

Wie viel Speicher braucht ein Docker-Container?

Hängt vom Image ab. Ein minimales Alpine-Linux-Image ist ~5 MB, ein Node.js-App-Image kann 200-800 MB groß werden, ein Java-Spring-Boot-Container schnell 1-2 GB. Im Betrieb kommt der RAM-Verbrauch der Anwendung dazu — typischerweise 50-500 MB pro Container.

Kann ich Docker auf Windows oder macOS produktiv nutzen?

Für Entwicklung: ja, aber mit Performance-Einbußen (besonders File-I/O). Für Produktion: nein. Produktions-Container laufen auf Linux-Servern. Beim Dev-Setup hilft WSL2 unter Windows oder Colima/Lima auf macOS, um die Performance-Probleme von Docker Desktop zu umgehen.

Was passiert mit meinen Daten, wenn ein Container gelöscht wird?

Daten im Container sind weg — Container sind ephemeral. Alles was persistent sein muss (Datenbank-Files, Uploads, Configs) gehört in ein Volume, das vom Container entkoppelt ist. docker volume create oder Bind-Mounts auf das Host-Filesystem. Diese Trennung ist die wichtigste Docker-Lektion überhaupt.

Fazit — wann Docker für dich Sinn macht

Docker ist kein Selbstzweck. Wer eine simple statische Website betreibt, braucht keine Container. Wer aber mehrere Tools selbst hostet (Nextcloud, n8n, Mautic, Twenty CRM), Dev und Produktion abgleichen will oder skalierbare Web-Apps baut — kommt an Containern kaum vorbei.

Mein typisches KMU-Setup: ein Hetzner- oder Netcup-Server, darauf Coolify (Self-hosted Deployment-Plattform basierend auf Docker), und die Business-Tools laufen als Container. Updates sind ein Klick, Backups automatisch, Migration zwischen Servern möglich ohne große Schmerzen.

Weiterlesen: IT-Infrastruktur einfach erklärt · Open-Source-Toolstack für KMU · n8n — dein digitaler Helfer · Der Stack — IT-Dienstleistungen aus Tirol

Thomas Baldermann, IT Engineer

Thomas Baldermann

IT Engineer · mehr als 15 Jahre IT-Erfahrung

Du liest hier von der Person, mit der du auch arbeitest — keine Agentur, kein Ticketsystem. Willst du sowas eingerichtet haben statt selbst zu basteln? Wir klären die Passung im kostenlosen 30-Minuten-Fit-Gespräch.

Fit-Gespräch anfragen · Mehr über mich

IT HUB Praxisnotizen

Ab und zu praktische Notizen zu Open Source, Automatisierung und Tools, die im KMU-Alltag wirklich helfen. Kein Spam, jederzeit abbestellbar.