Ein Text für die Kaffeepause — diesmal nicht über Psychologie, sondern über ein Tool, das dir den Kopf frei macht. Versprochen: keine Voraussetzungen, keine Buzzwords.
Kurzfassung für den ersten Schluck:
Docker packt deine App samt aller Abhängigkeiten in einen isolierten Container. Egal auf welchem Rechner du den startest — es läuft identisch. Kein „bei mir funktioniert's aber", kein Versions-Chaos. Ein Befehl, alles läuft. Ein Befehl, alles ist weg. Dein PC bleibt sauber.
1. Das Problem, das jeder kennt
Du willst ein Projekt starten. Dafür brauchst du Node.js, eine Datenbank, bestimmte Pakete — und alles muss genau zusammenpassen.
Jetzt willst du das gleiche Projekt auf einem Server deployen. Oder ein Kollege will es bei sich starten. Und dann passiert es:
„Bei mir läuft's nicht."
Weil er Node 18 hat statt 20. Oder Windows statt Mac. Oder eine andere Postgres-Version. Oder irgendein Dependency-Konflikt aus der Hölle.
Das ist kein Nischenproblem — das ist der Alltag in der Softwareentwicklung. Und genau hier kommt Docker ins Spiel.
2. Was Docker eigentlich ist
Docker ist ein Programm, das Container erstellt und verwaltet. Ein Container ist eine isolierte Umgebung, in der deine App läuft — mit allem, was sie braucht. Eigenes Betriebssystem, eigene Pakete, eigene Datenbank.
Stell dir einen Versandcontainer vor. Egal ob der auf einem Schiff, einem LKW oder im Hafen steht — der Inhalt bleibt identisch. Docker macht dasselbe mit Software.
Um Docker zu verstehen, brauchst du genau drei Begriffe:
3. Die drei Begriffe, die du dir merken musst
Dockerfile — das Rezept
Ein Dockerfile ist eine simple Textdatei in deinem Projekt. Vielleicht zehn Zeilen lang. Da steht drin: „Nimm Linux, installiere Node 20, kopiere meinen Code rein, starte die App." Das ist alles.
Denk an ein Backrezept. Es beschreibt Schritt für Schritt, was zu tun ist — aber es ist noch kein Kuchen.
Image — der fertige Kuchen
Wenn Docker das Dockerfile einmal „backt" (docker build), entsteht ein Image. Ein fertiges Paket mit allem drin — Betriebssystem, Node, dein Code, alle npm-Pakete.
Das Image verändert sich nie. Du kannst es auf einen Server schieben, einem Kollegen geben, oder fünf Mal gleichzeitig starten. Es ist immer dasselbe.
Container — der laufende Kuchen
Wenn du docker run tippst, nimmt Docker das Image und startet daraus einen isolierten Mini-Computer. Der Container sieht deinen restlichen PC nicht. Er hat sein eigenes Dateisystem, seine eigene Node-Version, seine eigene Datenbank.
Wenn du ihn löschst, ist alles weg — dein PC bleibt sauber. Keine Reste in der Registry, keine vergessenen Hintergrundprozesse.
4. docker-compose: Der Dirigent
In der Praxis brauchst du selten nur einen Container. Eine typische Web-App besteht aus der App selbst, einer Datenbank und vielleicht einem Cache. Drei Dinge, die zusammenarbeiten müssen.
Statt jeden Container einzeln zu starten, schreibst du eine docker-compose.yml — eine Datei, die beschreibt: „Ich brauche diese drei Container, und so reden sie miteinander."
So sieht eine docker-compose.yml aus:
# docker-compose.yml — Das ist alles. version: "3.8" services: app: build: . ports: - "3000:3000" depends_on: - db - redis db: image: postgres:16 environment: POSTGRES_PASSWORD: geheim redis: image: redis:alpine
Drei Services, eine Datei. Ein Befehl startet alles. Ein Befehl stoppt alles. Dein PC bleibt sauber.
5. Was sich im Kopf ändern muss
Der eigentliche Paradigmenwechsel bei Docker ist nicht technisch — er ist psychologisch.
Ohne Docker denkst du: „Ich installiere Node auf meinem PC." Du richtest dir alles ein, und dein Computer wird mit jedem Projekt ein bisschen vollgemüllter. Irgendwann traust du dich nicht mehr, etwas zu deinstallieren, weil vielleicht ein anderes Projekt das noch braucht.
Mit Docker denkst du: „Ich starte einen Container, der Node hat." Dein PC bleibt unberührt. Wenn das Projekt vorbei ist, löschst du den Container — fertig. Kein Müll, keine Reste, keine Angst.
Die Kernidee in einem Satz:
Du installierst nie wieder Datenbanken, Runtimes oder Tools direkt auf deinem Rechner. Alles lebt in Containern. Wenn etwas kaputt geht: Container löschen, neu starten. Zehn Sekunden.
6. Was Docker nicht ist
Docker ist keine virtuelle Maschine. Eine VM simuliert einen kompletten Computer inklusive eigenem Betriebssystem — das frisst RAM und dauert Minuten zum Starten. Ein Docker-Container teilt sich den Kernel mit deinem Host-System und startet in Sekunden.
Docker ist auch kein Hosting-Dienst. Es erstellt und verwaltet Container — wo die dann laufen (dein PC, ein Server, die Cloud), ist eine andere Frage.
Und Docker ist nicht immer nötig. Wenn du eine einfache Webseite auf Vercel deployst, brauchst du kein Docker. Vercel übernimmt den ganzen Build-Prozess für dich. Docker wird dann spannend, wenn du mehrere Services zusammen orchestrieren musst oder eine reproduzierbare Umgebung brauchst.
7. Wann Docker sich für dich lohnt
Docker macht Sinn, wenn mindestens einer dieser Punkte auf dich zutrifft:
Du arbeitest an Projekten mit einer Datenbank. Statt PostgreSQL oder MongoDB lokal zu installieren: ein Container, der beim Projektwechsel einfach ausgetauscht wird.
Du springst zwischen Projekten mit verschiedenen Node-Versionen. Kein nvm use 18, nvm use 20 mehr — jedes Projekt hat seine Version im Container.
Du willst Tools selbst hosten. Analytics, Automatisierung, CMS-Systeme — Docker macht Self-Hosting zum Einzeiler statt zum Wochenendprojekt.
Du willst sicherstellen, dass dein Setup reproduzierbar ist. Neuer Laptop? docker compose up — alles läuft wie vorher.
So fängst du an
Dein 3-Schritte-Einstieg:
Schritt 1: Installiere Docker Desktop für Windows (nutzt WSL2 im Hintergrund). Ein Installer, ein Neustart.
Schritt 2: Starte deinen ersten Container mit einem einzigen Befehl: docker run -p 8080:80 nginx — öffne localhost:8080 im Browser. Glückwunsch, du betreibst einen Webserver.
Schritt 3: Erstelle deine erste docker-compose.yml mit App + Datenbank. Zwei Services, die miteinander reden. Das „Aha"-Erlebnis kommt hier.
Docker ist eines dieser Tools, bei denen der Groschen erst fallen muss. Aber wenn er fällt, fragst du dich, wie du jemals ohne gearbeitet hast. Es ist der Unterschied zwischen „ich hoffe, das klappt auf dem Server auch" und „ich weiß, dass es klappt."
Und dieses Wissen — das ist unbezahlbar.