Diese Referenz enthält die wichtigsten Docker-Befehle für den täglichen Gebrauch. Von Grundlagen bis zu fortgeschrittenen Operationen.

Docker-System

Installation prüfen

# Docker-Version
docker --version
docker version  # Detaillierter

# Docker-Info
docker info

# Docker-Daemon Status
systemctl status docker

System aufräumen

# Ungenutzten Speicher freigeben
docker system prune

# Inkl. ungenutzter Images
docker system prune -a

# Inkl. Volumes (Vorsicht!)
docker system prune -a --volumes

# Speicherverbrauch anzeigen
docker system df

Images

Images auflisten

# Alle Images
docker images
docker image ls

# Mit Digest
docker images --digests

# Nur Image-IDs
docker images -q

Images herunterladen

# Neueste Version
docker pull nginx

# Spezifische Version
docker pull nginx:1.25

# Von anderem Registry
docker pull ghcr.io/owner/image:tag

Images suchen

# Docker Hub durchsuchen
docker search nginx

# Nur offizielle Images
docker search --filter is-official=true nginx

Images löschen

# Einzelnes Image
docker rmi nginx
docker image rm nginx

# Mehrere Images
docker rmi nginx mysql redis

# Alle ungenutzten Images
docker image prune -a

# Image nach ID
docker rmi abc123

Images taggen

# Neuen Tag erstellen
docker tag nginx:latest myregistry.com/nginx:v1.0

# Image umbenennen
docker tag old-name:tag new-name:tag

Images speichern/laden

# Als Datei exportieren
docker save nginx:latest > nginx.tar
docker save nginx:latest -o nginx.tar

# Aus Datei laden
docker load < nginx.tar
docker load -i nginx.tar

Container

Container starten

# Einfacher Start
docker run nginx

# Im Hintergrund (-d = detached)
docker run -d nginx

# Mit Namen
docker run -d --name webserver nginx

# Mit Port-Mapping
docker run -d -p 8080:80 nginx

# Mit Volume
docker run -d -v /host/path:/container/path nginx

# Mit Umgebungsvariablen
docker run -d -e MYSQL_ROOT_PASSWORD=secret mysql

# Interaktiv mit Shell
docker run -it ubuntu bash

# Automatisch entfernen nach Stopp
docker run --rm nginx

# Neustart-Policy
docker run -d --restart=always nginx

Container auflisten

# Laufende Container
docker ps

# Alle Container (inkl. gestoppte)
docker ps -a

# Nur IDs
docker ps -q

# Mit Größe
docker ps -s

Container stoppen/starten

# Stoppen (graceful)
docker stop webserver

# Stoppen nach Timeout
docker stop -t 30 webserver

# Sofort beenden (kill)
docker kill webserver

# Starten
docker start webserver

# Neustarten
docker restart webserver

# Alle Container stoppen
docker stop $(docker ps -q)

Container löschen

# Einzelnen Container
docker rm webserver

# Mehrere Container
docker rm container1 container2

# Alle gestoppten Container
docker container prune

# Force (auch laufende)
docker rm -f webserver

Container-Infos

# Logs anzeigen
docker logs webserver

# Logs live folgen
docker logs -f webserver

# Letzte 100 Zeilen
docker logs --tail 100 webserver

# Mit Timestamps
docker logs -t webserver

# Detaillierte Infos
docker inspect webserver

# Ressourcenverbrauch
docker stats
docker stats webserver

# Prozesse im Container
docker top webserver

In Container arbeiten

# Shell öffnen
docker exec -it webserver bash
docker exec -it webserver sh  # Falls kein bash

# Befehl ausführen
docker exec webserver ls /var/www

# Als anderer Benutzer
docker exec -u www-data -it webserver bash

# Datei in Container kopieren
docker cp localfile.txt webserver:/path/in/container/

# Datei aus Container kopieren
docker cp webserver:/path/in/container/file.txt ./

Container-Änderungen

# Änderungen am Dateisystem
docker diff webserver

# Container als Image speichern
docker commit webserver my-nginx:custom

# Mit Commit-Message
docker commit -m "Added custom config" webserver my-nginx:custom

Volumes

Volumes verwalten

# Volumes auflisten
docker volume ls

# Volume erstellen
docker volume create mydata

# Volume-Details
docker volume inspect mydata

# Volume löschen
docker volume rm mydata

# Alle ungenutzten Volumes löschen
docker volume prune

Volumes verwenden

# Named Volume
docker run -d -v mydata:/data nginx

# Bind Mount (Host-Verzeichnis)
docker run -d -v /host/path:/container/path nginx

# Read-only
docker run -d -v /host/path:/container/path:ro nginx

# tmpfs (nur RAM)
docker run -d --tmpfs /tmp nginx

Netzwerke

Netzwerke verwalten

# Netzwerke auflisten
docker network ls

# Netzwerk erstellen
docker network create mynetwork

# Mit Subnet
docker network create --subnet=172.18.0.0/16 mynetwork

# Netzwerk-Details
docker network inspect mynetwork

# Netzwerk löschen
docker network rm mynetwork

# Ungenutzte Netzwerke löschen
docker network prune

Container mit Netzwerk

# Container mit Netzwerk starten
docker run -d --network mynetwork nginx

# Container zu Netzwerk hinzufügen
docker network connect mynetwork webserver

# Container aus Netzwerk entfernen
docker network disconnect mynetwork webserver

Docker Compose (kurz)

# Container starten
docker compose up -d

# Container stoppen
docker compose down

# Mit Volumes löschen
docker compose down -v

# Logs
docker compose logs -f

# Neustarten
docker compose restart

# Einzelnen Service
docker compose up -d nginx

Dockerfile bauen

# Image bauen
docker build -t myimage:tag .

# Mit anderem Dockerfile
docker build -t myimage:tag -f Dockerfile.prod .

# Ohne Cache
docker build --no-cache -t myimage:tag .

# Build-Argument übergeben
docker build --build-arg VERSION=1.0 -t myimage:tag .

Registry

# Bei Registry anmelden
docker login
docker login registry.example.com

# Image pushen
docker push myregistry.com/myimage:tag

# Abmelden
docker logout

Nützliche Kombinationen

Alle Container stoppen und löschen

docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

Alle Images löschen

docker rmi $(docker images -q)

Shell in neusten Container

docker exec -it $(docker ps -q -l) bash

Container-IPs anzeigen

docker inspect -f '{{.Name}} - {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -q)

Image-Größen sortiert

docker images --format "{{.Size}}\t{{.Repository}}:{{.Tag}}" | sort -h

Zusammenfassung

| Aufgabe | Befehl | |---------|--------| | Container starten | docker run -d --name x image | | Container auflisten | docker ps -a | | Container stoppen | docker stop x | | Container löschen | docker rm x | | Logs anzeigen | docker logs -f x | | Shell öffnen | docker exec -it x bash | | Images auflisten | docker images | | Image herunterladen | docker pull image:tag | | Image löschen | docker rmi image | | Aufräumen | docker system prune -a |

Fazit

Diese Befehle decken 95% der täglichen Docker-Arbeit ab. Die wichtigsten sind run, ps, logs, exec und stop. Für komplexere Setups ist Docker Compose empfehlenswert. Räumen Sie regelmäßig mit docker system prune auf, um Speicherplatz zu sparen.