Was ist Docker? Docker ist eine Plattform, mit der du Anwendungen in Containern starten und verwalten kannst. Ein Container enthält die Anwendung und die benötigten Laufzeitbestandteile. So lässt sich ein Dienst auf einem anderen Rechner meist mit denselben Einstellungen erneut starten, ohne dort jede Abhängigkeit einzeln einzurichten.
Docker wird häufig für Entwicklungsumgebungen, Tests und Serverdienste genutzt. Damit der Einstieg verständlich bleibt, schauen wir zuerst auf die Bausteine. Anschließend startest du einen kleinen Webserver und siehst, wann Volumes und Docker Compose wichtig werden.
Was ist Docker und wie funktioniert es?
Wenn du docker run ausführst, spricht die Docker-Kommandozeile mit der Docker Engine. Diese lädt bei Bedarf ein Image, erstellt daraus einen Container und startet dessen Prozess. Ein Container ist also keine vollständige virtuelle Maschine mit eigenem Betriebssystem. Linux-Container nutzen die Funktionen eines Linux-Kernels zur Trennung von Prozessen und Ressourcen.
Auf einem Linux-Host kann die Docker Engine direkt laufen. Docker Desktop stellt für Linux-Container unter Windows und macOS die nötige Linux-Umgebung bereit. Deshalb ist ein Linux-Container auf einem Windows-Rechner weiterhin ein Linux-Container. Auch die Prozessorarchitektur und die vom Image unterstützten Plattformen müssen passen.
Image, Container, Volume: die wichtigsten Begriffe
- Image: Eine Vorlage für Container. Sie enthält die Anwendung und ihre benötigten Dateien. Docker lädt Images beispielsweise aus einer Registry.
- Container: Eine gestartete Instanz eines Images. Aus demselben Image kannst du mehrere Container erzeugen.
- Registry: Ein Speicherort für Images. Docker Hub ist ein bekanntes Beispiel; auch private Registries sind möglich.
- Volume: Ein von Docker verwalteter Speicherbereich für Daten, die einen neu erstellten Container überleben sollen.
- Netzwerk: Es verbindet Container miteinander oder ermöglicht gezielt den Zugriff auf einen Dienst.
Der Unterschied zwischen Image und Container ist besonders wichtig: Ein neues Image aktualisiert einen bereits laufenden Container nicht automatisch. Der Container muss mit dem neuen Image neu erstellt werden. Daten, die nur im beschreibbaren Dateisystem des Containers liegen, können beim Entfernen des Containers verloren gehen. Für Datenbanken und andere dauerhafte Daten brauchst du deshalb ein geeignetes Volume oder eine gezielte Verzeichniseinbindung.
Was kann Docker im Alltag?
Entwicklungsumgebungen bereitstellen
Ein Team kann festlegen, welche Laufzeit, Datenbank und weiteren Dienste eine Anwendung benötigt. Statt jede Komponente auf jedem Rechner einzeln zu installieren, starten die Beteiligten die beschriebenen Container. Unterschiedliche Einstellungen des Hostsystems verschwinden dadurch nicht vollständig, aber die Anwendungsumgebung wird leichter nachvollziehbar.
Anwendungen testen
Für einen Test kannst du einen Dienst starten und danach wieder entfernen. Das eignet sich beispielsweise, um eine neue Anwendungsversion zu prüfen oder eine Datenbank für lokale Entwicklung bereitzustellen. Der Vorteil liegt vor allem darin, dass du die Umgebung wiederholt aufbauen kannst.
Dienste auf einem Server betreiben
Auch Webanwendungen, Datenbanken und Verwaltungsoberflächen lassen sich in Containern betreiben. Für einen zuverlässigen Betrieb brauchst du zusätzlich eine Strategie für Updates, Zugriffsrechte, Protokolle, Backups und die Wiederherstellung. Docker nimmt dir diese Entscheidungen nicht ab.
Erster Docker-Container: einen Webserver starten
Für dieses Beispiel muss Docker bereits installiert und die Docker Engine gestartet sein. Prüfe zunächst, ob Client und Engine erreichbar sind:
docker version
Starte danach einen kleinen Nginx-Webserver:
docker run --rm -d --name docker-demo -p 127.0.0.1:8080:80 nginx:stable-alpine
Docker lädt das Image bei Bedarf herunter und startet den Container im Hintergrund. Der Port 8080 ist nur auf dem lokalen Rechner erreichbar. Öffne http://127.0.0.1:8080 im Browser. Wenn die Nginx-Startseite erscheint, funktioniert die Portweiterleitung.
Den Status und die Protokolle prüfst du mit:
docker ps
docker logs docker-demo
Zum Beenden genügt:
docker stop docker-demo
Die Option --rm entfernt den Container nach dem Stoppen automatisch. Für wichtige Daten wäre dieses einfache Beispiel ungeeignet, weil es kein Volume verwendet. Eine ausführliche Einrichtung für Windows, macOS und Linux findest du im Beitrag Docker installieren und konfigurieren.
Was ist Docker Compose?
Mit Docker Compose beschreibst du einen oder mehrere Dienste in einer Datei namens compose.yaml. Darin stehen beispielsweise das Image, die Ports, Volumes und Umgebungsvariablen. Anschließend startest du die beschriebenen Dienste mit docker compose up -d. Der aktuelle Aufruf verwendet ein Leerzeichen zwischen docker und compose.
Compose ist besonders nützlich, wenn eine Anwendung aus mehreren Teilen besteht oder du dieselbe Konfiguration später erneut starten möchtest. Ein Compose-Projekt könnte beispielsweise einen Webdienst und eine Datenbank enthalten. Die Dienste erhalten ein gemeinsames Projektnetzwerk und können darüber miteinander kommunizieren.
Wie das in einem konkreten Projekt aussieht, zeigt die Anleitung SQL Server mit Docker Compose unter Windows bereitstellen. Dort kommen auch ein Daten-Volume und ein Healthcheck zum Einsatz.
Docker und virtuelle Maschinen: Wo liegt der Unterschied?
Eine virtuelle Maschine bringt ein vollständiges Gastbetriebssystem mit. Ein Container ist in der Regel leichter und startet schneller, weil seine Prozesse die Kernel-Funktionen der jeweiligen Containerumgebung nutzen. Das bedeutet allerdings nicht, dass Container dieselbe Trennung wie eine virtuelle Maschine bieten. Außerdem hängt die Ausführung weiterhin von der passenden Betriebssystem- und Prozessorplattform ab.
Für klar getrennte Betriebssysteme oder besondere Sicherheitsanforderungen kann eine virtuelle Maschine die passende Wahl sein. Docker eignet sich vor allem dann, wenn du Anwendungen samt Konfiguration wiederholbar bereitstellen und verwalten möchtest.
Worauf solltest du bei Docker achten?
- Daten sichern: Ein Volume hält Daten beim Neuerstellen eines Containers vor. Es ist noch kein Backup, denn es liegt weiterhin auf dem Docker-Host.
- Ports bewusst freigeben: Veröffentliche nur Dienste, die erreichbar sein müssen. Für lokale Tests ist eine Bindung an
127.0.0.1sinnvoll. - Images prüfen und aktualisieren: Verwende vertrauenswürdige Quellen und plane Updates. Ein unkontrolliert wechselnder
latest-Tag erschwert reproduzierbare Umgebungen. - Rechte begrenzen: Der Zugriff auf die Docker Engine ist weitreichend. Gib den Docker-Socket nicht leichtfertig an andere Container weiter und starte Container nicht unnötig privilegiert.
- Ressourcen beobachten: Container teilen sich CPU, Arbeitsspeicher und Speicherplatz des Hosts. Begrenzungen und Monitoring helfen, wenn mehrere Dienste gleichzeitig laufen.
Eine Weboberfläche kann die Verwaltung erleichtern. Die Dockhand-Anleitung zeigt ein Beispiel für einen Linux-Host. Wegen des Zugriffs auf die Docker Engine ist dort besonders auf Anmeldung und Netzwerkfreigaben zu achten.
Häufige Fragen zu Docker
Ist Docker kostenlos?
Docker Engine und viele Werkzeuge können frei genutzt werden. Für Docker Desktop gelten eigene Lizenzbedingungen, die von der Art und Größe der Organisation abhängen können. Prüfe vor dem Einsatz im Unternehmen die aktuellen Bedingungen des Herstellers.
Bleiben Daten erhalten, wenn ich einen Container lösche?
Nur wenn du sie passend außerhalb des beschreibbaren Container-Dateisystems speicherst, etwa in einem Volume oder einem eingebundenen Hostverzeichnis. Auch diese Daten müssen bei Bedarf separat gesichert werden.
Brauche ich Docker Compose für jeden Container?
Nein. Für einen kurzen Test reicht oft docker run. Wenn du die Konfiguration dokumentieren oder mehrere Dienste gemeinsam verwalten möchtest, ist eine Compose-Datei meist praktischer.
Fazit: Was ist Docker und für wen lohnt es sich?
Docker verpackt Anwendungen in Images und startet sie als Container. Das erleichtert wiederholbare Entwicklungs- und Testumgebungen und kann auch den Betrieb von Serverdiensten vereinfachen. Entscheidend ist, die Grenzen zu kennen: Ein Container braucht passende Plattformen, dauerhafte Daten benötigen Volumes und wichtige Dienste brauchen Updates und Backups. Wenn du Docker ausprobieren möchtest, beginne mit dem kleinen Webserver oben und gehe danach zur Installations- und Konfigurationsanleitung über.