Docker für den Schnellstart: Container in 10 Minuten
„Läuft bei mir" – dieser Satz ist der Klassiker unter Entwicklern. Docker beendet das Problem, indem es Anwendungen samt Umgebung in Container verpackt. Einmal gebaut, läuft ein Container überall gleich: auf dem Laptop, dem Server oder in der Cloud.
Container und Images
Zwei Begriffe stehen am Anfang:
- Ein Image ist die Vorlage – eine Art Bauplan der Anwendung inklusive Betriebssystem-Basis, Code und Abhängigkeiten.
- Ein Container ist die laufende Instanz eines Images.
Aus einem Image lassen sich beliebig viele Container starten, und ein Vergleich zur Objektorientierung drängt sich auf: Das Image ist die Klasse, der Container das Objekt.
Das erste Image
Das Testen beginnt direkt in der Shell. Das offizielle Nginx-Image startet einen Webserver mit einer Zeile:
docker run -d -p 8080:80 nginx
Danach ist der Server unter http://localhost:8080 erreichbar. Die Parameter im Einzelnen:
-dstartet den Container im Hintergrund-p 8080:80verbindet den Host-Port 8080 mit dem Container-Port 80
Wichtige Docker-Befehle
Die häufigsten Befehle im Überblick:
| Befehl | Wirkung |
|---|---|
docker ps |
Laufende Container anzeigen |
docker ps -a |
Alle Container, auch gestoppte |
docker images |
Lokale Images auflisten |
docker stop <name> |
Container stoppen |
docker rm <name> |
Container löschen |
docker rmi <image> |
Image löschen |
docker logs <name> |
Ausgaben des Containers anzeigen |
docker exec -it <name> sh |
Shell im laufenden Container öffnen |
Das eigene Image bauen
Ein eigenes Image wird über ein Dockerfile definiert. Ein minimales Beispiel für eine Python-Anwendung:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Der Bau und Start erfolgen dann so:
docker build -t meine-app .
docker run -p 5000:5000 meine-app
Jede Zeile im Dockerfile erzeugt eine Ebene im Image. Das sorgt dafür, dass sich nur Geändertes neu baut – und macht COPY-Zeilen im Dockerfile zu den wichtigsten Hebel für schnelle Builds.
Daten dauerhaft speichern
Container sind wegwerfbar: Stoppt man sie, gehen darin geschriebene Dateien verloren. Volumes lösen das:
docker run -d -v daten:/var/lib/mysql mysql:8
Das benannte Volume daten überlebt, auch wenn der Container gelöscht wird. Alternativ bindet man mit -v /pfad/auf/host:/pfad/im/container ein echtes Verzeichnis ein.
Fazit
Docker wirkt mit seinen vielen Konzepten zunächst groß, aber der Einstieg ist klein: ein Image, ein docker run, ein Dockerfile. Wer diese drei Dinge verstanden hat, hat die wichtigste Hürde genommen – der Rest ist Detailwissen, das sich bei Bedarf ergänzen lässt.