Docker

0 53

Docker-Befehlsstruktur

Alle Docker-Befehle folgen diesem Muster:

docker [OBJEKT] [BEFEHL] [OPTIONEN]

Beispiel:

docker container run -d nginx
       ↑        ↑    ↑    ↑
    Programm Objekt Befehl Optionen

Container-Befehle

Container starten

# Einfacher Start
docker run nginx

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

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

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

# Mit Environment-Variablen
docker run -d -e MYSQL_ROOT_PASSWORD=geheim mysql

# Interaktiv mit Terminal
docker run -it ubuntu bash

Wichtigste Optionen:

  • -d: Detached (Hintergrund)
  • -p HOST:CONTAINER: Port-Mapping
  • --name: Container-Name vergeben
  • -e: Umgebungsvariable setzen
  • -it: Interaktiver Modus mit Terminal
  • -v: Volume mounten
  • --rm: Container nach Stopp löschen

Laufende Container anzeigen

# Nur laufende Container
docker ps

# Alle Container (auch gestoppte)
docker ps -a

# Nur Container-IDs
docker ps -q

# Mit Größeninformationen
docker ps -s

# Letzte X Container
docker ps -n 5

Container stoppen und starten

# Container stoppen (graceful)
docker stop container-name

# Container sofort beenden (forceful)
docker kill container-name

# Container starten
docker start container-name

# Container neu starten
docker restart container-name

# Mehrere Container gleichzeitig
docker stop container1 container2 container3

Container löschen

# Einen Container löschen
docker rm container-name

# Mit Force (auch wenn er läuft)
docker rm -f container-name

# Mehrere Container
docker rm container1 container2

# Alle gestoppten Container löschen
docker container prune

# Mit Bestätigung
docker container prune -f

Container-Informationen

# Details anzeigen
docker inspect container-name

# Logs anzeigen
docker logs container-name

# Logs in Echtzeit verfolgen
docker logs -f container-name

# Letzte 100 Zeilen
docker logs --tail 100 container-name

# Mit Timestamps
docker logs -t container-name

# Prozesse im Container
docker top container-name

# Ressourcen-Verbrauch live
docker stats

# Einzelner Container
docker stats container-name

In Container einsteigen

# Bash-Shell öffnen
docker exec -it container-name bash

# Einzelnen Befehl ausführen
docker exec container-name ls -la

# Als root ausführen
docker exec -u root -it container-name bash

# Dateien vom Container kopieren
docker cp container-name:/pfad/zur/datei.txt ./local/
docker cp ./local/datei.txt container-name:/pfad/im/container/

Image-Befehle

Images verwalten

# Alle Images anzeigen
docker images

# Image herunterladen
docker pull nginx
docker pull nginx:1.21-alpine

# Image von Docker Hub suchen
docker search nginx

# Image löschen
docker rmi image-name

# Mit Force
docker rmi -f image-name

# Ungenutzte Images löschen
docker image prune

# Alle ungenutzten Images löschen
docker image prune -a

Images erstellen

# Aus Dockerfile bauen
docker build -t mein-image:v1 .

# Mit spezifischem Dockerfile
docker build -f Dockerfile.prod -t mein-image:prod .

# Ohne Cache
docker build --no-cache -t mein-image:v1 .

# Mit Build-Argumenten
docker build --build-arg VERSION=1.0 -t mein-image:v1 .

Images taggen und pushen

# Image taggen
docker tag mein-image:v1 username/mein-image:v1

# Zu Docker Hub pushen (nach docker login)
docker push username/mein-image:v1

# Image als TAR exportieren
docker save -o mein-image.tar mein-image:v1

# Image aus TAR laden
docker load -i mein-image.tar

Volume-Befehle

# Volume erstellen
docker volume create mein-volume

# Alle Volumes anzeigen
docker volume ls

# Volume-Details
docker volume inspect mein-volume

# Volume löschen
docker volume rm mein-volume

# Ungenutzte Volumes löschen
docker volume prune

# Container mit Volume
docker run -d -v mein-volume:/data nginx

Netzwerk-Befehle

# Netzwerke anzeigen
docker network ls

# Netzwerk erstellen
docker network create mein-netzwerk

# Mit spezifischem Driver
docker network create -d bridge mein-netzwerk

# Netzwerk-Details
docker network inspect mein-netzwerk

# Container mit Netzwerk
docker run -d --network mein-netzwerk nginx

# Container zu Netzwerk hinzufügen
docker network connect mein-netzwerk container-name

# Container von Netzwerk trennen
docker network disconnect mein-netzwerk container-name

# Netzwerk löschen
docker network rm mein-netzwerk

# Ungenutzte Netzwerke löschen
docker network prune

System-Befehle

# Docker-Version
docker version

# System-Informationen
docker info

# Speicherplatz-Nutzung
docker system df

# Detaillierte Speicherinfo
docker system df -v

# Alles aufräumen (Vorsicht!)
docker system prune

# Mit Volumes
docker system prune -a --volumes

# Events in Echtzeit
docker events

Praktische Kombinationen

Alle gestoppten Container löschen

docker rm $(docker ps -aq -f status=exited)

Alle Container stoppen

docker stop $(docker ps -q)

Alle Container und Images löschen

docker stop $(docker ps -q)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)

Container-Logs der letzten 5 Minuten

docker logs --since 5m container-name

Container mit Ressourcen-Limits

docker run -d \
  --memory="512m" \
  --cpus="0.5" \
  --name limited-container \
  nginx

Docker Compose Befehle

# Services starten
docker compose up -d

# Mit Rebuild
docker compose up -d --build

# Services stoppen
docker compose stop

# Services stoppen und entfernen
docker compose down

# Mit Volumes
docker compose down -v

# Logs anzeigen
docker compose logs

# Logs folgen
docker compose logs -f

# Bestimmten Service
docker compose logs api

# Services neu starten
docker compose restart

# Einzelnen Service neu starten
docker compose restart api

# Status anzeigen
docker compose ps

# Befehl in Service ausführen
docker compose exec api bash

# Einmaliger Befehl
docker compose run --rm api npm install

# Services skalieren
docker compose up -d --scale api=3

Hilfe und Dokumentation

# Allgemeine Hilfe
docker --help

# Hilfe zu einem Befehl
docker run --help

# Compose-Hilfe
docker compose --help

Shortcuts und Aliase

Fügen Sie zu Ihrer ~/.bashrc oder ~/.zshrc hinzu:

# Docker-Shortcuts
alias dps='docker ps'
alias dpsa='docker ps -a'
alias di='docker images'
alias dex='docker exec -it'
alias dlog='docker logs -f'
alias drm='docker rm'
alias drmi='docker rmi'
alias dstop='docker stop $(docker ps -q)'

# Docker Compose Shortcuts
alias dc='docker compose'
alias dcu='docker compose up -d'
alias dcd='docker compose down'
alias dcl='docker compose logs -f'
alias dcr='docker compose restart'

Nach dem Hinzufügen:

source ~/.bashrc

Wichtige Tastenkombinationen

Im interaktiven Container-Terminal:

  • Ctrl + P, Ctrl + Q: Container verlassen ohne zu stoppen
  • Ctrl + C: Prozess im Container beenden
  • Ctrl + D: Shell beenden und Container verlassen
  • exit: Shell beenden

Best Practices

  1. Namen verwenden: Geben Sie Containern aussagekräftige Namen
  2. Logs prüfen: Bei Problemen immer zuerst die Logs checken
  3. Aufräumen: Regelmäßig docker system prune ausführen
  4. Tags nutzen: Verwenden Sie spezifische Versions-Tags, nicht latest
  5. Volumes für Daten: Niemals wichtige Daten nur im Container speichern

Cheat Sheet – Die Top 20 Befehle

# Container
docker run -d -p 8080:80 nginx        # Container starten
docker ps                              # Laufende Container
docker ps -a                           # Alle Container
docker stop <name>                     # Container stoppen
docker rm <name>                       # Container löschen
docker logs -f <name>                  # Logs anzeigen
docker exec -it <name> bash            # In Container einsteigen

# Images
docker images                          # Alle Images
docker pull <image>                    # Image herunterladen
docker rmi <image>                     # Image löschen
docker build -t <name> .              # Image bauen

# System
docker system df                       # Speicherplatz
docker system prune                    # Aufräumen
docker info                            # System-Info

# Compose
docker compose up -d                   # Services starten
docker compose down                    # Services stoppen
docker compose logs -f                 # Logs anzeigen
docker compose ps                      # Status

# Aufräumen
docker container prune                 # Gestoppte Container
docker image prune -a                  # Ungenutzte Images
docker volume prune                    # Ungenutzte Volumes

Zusammenfassung

Diese Befehle decken 95% aller täglichen Docker-Aufgaben ab. Mit der Zeit werden sie zur zweiten Natur.

Tipp: Drucken Sie das Cheat Sheet aus und hängen Sie es neben Ihren Monitor

Author: Andreas Lang

Sphinx-Flashdesign.de

Andreas Lang konzentriert sich seit zwei Jahrzehnten auf die Webentwicklung und Webdesign mit dem Schwerpunkt PHP, Laravel und Javascript und betreut seine Kunden mit Herz und Seele in allen Bereichen von Entwicklung, Design, Suchmaschinenoptimierung, IT-Recht, IT-Sicherheit etc.