Docker schnell verstehen: Die wichtigsten Befehle mit einfachen Beispielen
Docker macht es leicht, Anwendungen in Containern auszuführen – isoliert, reproduzierbar und schnell.
In diesem Artikel lernst du die wichtigsten Befehle kennen und probierst sie sofort aus.
Alles ist anfängerfreundlich erklärt und direkt zum Nachmachen.
Voraussetzungen
- Docker ist installiert (
docker --versionsollte eine Version ausgeben). - Terminal/Konsole geöffnet (macOS/Linux: Terminal, Windows: PowerShell oder WSL).
- Internetverbindung (zum Herunterladen von Images).
Wichtige Begriffe (kurz & klar)
- Image: Vorlage/“Bauplan” für Container (z. B.
nginx). - Container: Laufende Instanz eines Images.
- Registry: Online-Katalog für Images (z. B. Docker Hub).
- Detached Mode: Container läuft im Hintergrund (
-d). - Port-Mapping: Verbindet Host-Port mit Container-Port (
-p 5000:80). - Volume: Bindet Ordner/Dateien in den Container (
-v).
1) Was läuft gerade? – Container & Images anzeigen
| Befehl | Erklärung |
|---|---|
docker ps |
Laufende Container anzeigen |
docker ps -a |
Auch beendete Container anzeigen |
docker images oder docker image ls |
Installierte Images anzeigen |
docker info |
Übersicht über Docker-Installation & System |
2) Images finden & laden
| Befehl | Erklärung |
|---|---|
docker search <name> |
Suche nach einem Image (z. B. docker search nginx) |
docker pull <name> |
Image herunterladen (z. B. docker pull nginx) |
3) Deinen ersten Container starten
Beispiel A: Nginx Webserver lokal testen
- Starte Nginx und mappe Port
5000auf den Container-Port80:
docker run -p 5000:80 nginx
Öffne jetzt im Browser: http://localhost:5000
Im Hintergrund laufen lassen (detached)
docker run -p 5000:80 -d nginx
Der Container läuft weiter, auch wenn das Terminal geschlossen wird.
Beispiel B: Interaktiv in eine Minimal-Shell (busybox)
docker run -it busybox sh
-it = interaktiv mit TTY. Beenden mit exit (oder abbrechen mit Strg+C).
4) Container benennen, neu starten & sauber wieder verlassen
| Befehl | Erklärung |
|---|---|
docker run -dit --name webklaus -p 80:80 nginx |
Startet Nginx im Hintergrund, vergibt einen festen Container-Namen (webklaus) und mappt Port 80 |
docker exec -ti webklaus bash |
Öffnet eine Bash im laufenden Container (beenden mit exit – Container läuft weiter) |
docker attach webklaus |
“An” den Hauptprozess anhängen. Mit Strg+P, dann Strg+Q sauber trennen (Container läuft weiter) |
exec startet eine neue Shell im Container (sicherer für Admin-Aufgaben).attach hängt an den Hauptprozess – unbeabsichtigtes Beenden kann den Container stoppen.5) Eigene HTML-Seiten mit Nginx testen (Volume-Mount)
Angenommen, du hast einen lokalen Ordner mit einer index.html. Binde ihn in Nginx ein:
docker run -p 80:80 -d \
-v "/pfad/zu/deinem/ordner:/usr/share/nginx/html" \
--name mysite \
nginx
-vverknüpft dein lokales Verzeichnis mit dem Webroot im Container.- Unter Windows ersetze einfache Anführungszeichen ggf. durch doppelte (
"...:...").
Praktische Startvariante mit Neustart-Politik:
docker run -p 80:80 -dit \
--restart unless-stopped \
-v "/pfad/zu/deinem/ordner:/usr/share/nginx/html" \
--name mysite \
nginx
So habe ich es z. B. unter meinem ubuntu-Rechner gemacht, mit dem Home-Verzeichnis tobias:
docker run -p 80:80 -d -dit --name webserver --restart unless-stopped -v '/home/tobias/Öffentlich/web/':/usr/share/nginx/html nginx
Neustart-Politiken: no (Standard), always (Vorsicht), unless-stopped (empfohlen), on-failure.
6) Container stoppen, löschen & aufräumen
| Befehl | Erklärung |
|---|---|
docker stop <container> |
Container anhalten |
docker rm <container> |
Gestoppten Container löschen |
docker container prune |
Alle gestoppten Container löschen (Bestätigung nötig) |
docker image rm <image> |
Image löschen |
docker image prune |
Ungenutzte Images löschen |
7) Logs & Ressourcen prüfen
| Befehl | Erklärung |
|---|---|
docker logs <container> |
Logs eines Containers anzeigen |
docker logs -f <container> |
Logs “folgen” (live mitlesen, abbrechen mit Strg+C) |
docker stats |
CPU-/RAM-/Netzwerk-Nutzung laufender Container (abbrechen mit Strg+C) |
8) Ressourcen begrenzen (optional)
So limitierst du Speicher und CPU bei einem neuen Container:
docker run -m 64m --cpus="0.5" --name sparsam busybox sh -c "while true; do sleep 5; done"
-m 64m= max. 64 MB RAM--cpus="0.5"= halbe CPU
9) Mini-Crashkurs: Docker Compose
Mit Compose startest du mehrere Container als “Stapel”. Lege eine Datei docker-compose.yml an und starte alles mit einem Befehl.
Beispiel: Nginx per Docker Compose (zum Aufklappen)
# docker-compose.yml
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stopped
Dann starten:
docker compose up -d
Beenden & entfernen:
docker compose down
Häufige Stolpersteine (und schnelle Lösungen)
- Port schon belegt? Wähle einen anderen Host-Port, z. B.
-p 5001:80. - Kein Zugriff auf Ordner? Prüfe den Pfad und die Rechte; unter Windows/Powershell doppelte Anführungszeichen nutzen.
- Container stoppt sofort? Manche Images beenden sich, wenn kein Vordergrundprozess läuft – nutze
-d, oder starte einen Dienst/Befehl im Vordergrund. - “Permission denied” bei Volume? Ordner existiert? Rechte prüfen; unter Linux ggf.
sudoverwenden.
Spickzettel (Cheatsheet)
| Befehl | Erklärung |
|---|---|
docker ps |
Laufende Container |
docker ps -a |
Alle Container (inkl. beendeter) |
docker images / docker image ls |
Installierte Images |
docker search <name> |
Image suchen |
docker pull <name> |
Image laden |
docker run <image> |
Container starten |
docker run -p 5000:80 nginx |
Nginx auf localhost:5000 |
docker run -it busybox sh |
Interaktive Shell |
docker run -dit --name NAME <image> |
Benannter, “detached” Container |
docker exec -ti <container> bash |
Shell im Container (beenden: exit) |
docker attach <container> |
An Hauptprozess anhängen (trennen: Strg+P, dann Strg+Q) |
docker stop <container> |
Container stoppen |
docker rm <container> |
Gestoppten Container löschen |
docker container prune |
Alle gestoppten Container löschen |
docker image rm <image> |
Image löschen |
docker image prune |
Ungenutzte Images löschen |
docker logs [-f] <container> |
Logs ansehen [folgen] |
docker stats |
Ressourcenauslastung |
docker run -m 64m --cpus="0.5" <image> |
Ressourcen begrenzen |
docker compose up -d |
Compose-Stack starten |
docker compose down |
Compose-Stack stoppen & entfernen |
Viel Erfolg beim Ausprobieren! Wenn du möchtest, erweitere ich den Artikel gern um einen Abschnitt “Fehlerdiagnose” mit typischen Fehlermeldungen und Lösungen – sag einfach Bescheid.

