Docker Model Runner Cheatsheet: Befehle & Beispiele
Schnelle Referenz für Docker Model Runner-Befehle
Docker Model Runner (DMR) ist die offizielle Lösung von Docker zum lokalen Ausführen von KI-Modellen, eingeführt im April 2025. Dieses Cheatblatt bietet eine schnelle Referenz für alle wesentlichen Befehle, Konfigurationen und Best Practices.
Installation
Docker Desktop
Aktivieren Sie Docker Model Runner über die GUI:
- Öffnen Sie Docker Desktop
- Gehen Sie zu Einstellungen → KI-Registerkarte
- Klicken Sie auf Docker Model Runner aktivieren
- Starten Sie Docker Desktop neu
/home/rg/prj/hugo-pers/content/post/2025/10/docker-model-runner-cheatsheet/docker-model-runner_w678.jpg
Docker Engine (Linux)
Installieren Sie das Plugin-Paket:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker-model-plugin
# Fedora/RHEL
sudo dnf install docker-model-plugin
# Arch Linux
sudo pacman -S docker-model-plugin
Überprüfen Sie die Installation:
docker model --help
Kernbefehle
Modelle herunterladen
Laden Sie vorkonfigurierte Modelle von Docker Hub herunter:
# Grundlegendes Herunterladen
docker model pull ai/llama2
# Spezifische Version herunterladen
docker model pull ai/llama2:7b-q4
# Von einem benutzerdefinierten Registry herunterladen
docker model pull myregistry.com/models/mistral:latest
# Verfügbare Modelle in einem Namensraum auflisten
docker search ai/
Modelle ausführen
Starten Sie ein Modell mit automatischer API-Bereitstellung:
# Grundlegendes Ausführen (interaktiv)
docker model run ai/llama2 "Was ist Docker?"
# Als Dienst ausführen (Hintergrund)
docker model run -d --name my-llm ai/llama2
# Mit benutzerdefiniertem Port ausführen
docker model run -p 8080:8080 ai/llama2
# Mit GPU-Spezifikation ausführen
docker model run --gpus 0,1 ai/llama2
# Mit Speicherbegrenzung ausführen
docker model run --memory 8g ai/llama2
# Mit Umgebungsvariablen ausführen
docker model run -e MODEL_CONTEXT=4096 ai/llama2
# Mit Volume-Mount für persistente Daten ausführen
docker model run -v model-data:/data ai/llama2
Modelle auflisten
Anzeigen der heruntergeladenen und ausgeführten Modelle:
# Alle heruntergeladenen Modelle auflisten
docker model ls
# Laufende Modelle auflisten
docker model ps
# Mit detaillierten Informationen auflisten
docker model ls --all --format json
# Nach Name filtern
docker model ls --filter "name=llama"
Modelle stoppen
Stoppen Sie laufende Modellinstanzen:
# Spezifisches Modell stoppen
docker model stop my-llm
# Alle laufenden Modelle stoppen
docker model stop $(docker model ps -q)
# Mit Timeout stoppen
docker model stop --time 30 my-llm
Modelle entfernen
Löschen Sie Modelle aus dem lokalen Speicher:
# Spezifisches Modell entfernen
docker model rm ai/llama2
# Mit erzwingen entfernen (auch wenn laufend)
docker model rm -f ai/llama2
# Nicht verwendete Modelle bereinigen
docker model prune
# Alle Modelle entfernen
docker model rm $(docker model ls -q)
Packaging benutzerdefinierter Modelle
Erstellen eines OCI-Artifacts aus GGUF
Paketieren Sie Ihre eigenen GGUF-Modelle:
# Grundlegendes Paketieren
docker model package --gguf /path/to/model.gguf myorg/mymodel:latest
# Paketieren mit Metadaten
docker model package \
--gguf /path/to/model.gguf \
--label "description=Benutzerdefiniertes Llama-Modell" \
--label "version=1.0" \
myorg/mymodel:v1.0
# Paketieren und hochladen in einem Befehl
docker model package --gguf /path/to/model.gguf --push myorg/mymodel:latest
# Paketieren mit benutzerdefinierter Kontextgröße
docker model package \
--gguf /path/to/model.gguf \
--context 8192 \
myorg/mymodel:latest
Modelle veröffentlichen
Laden Sie Modelle in Registries hoch:
# Anmelden bei Docker Hub
docker login
# Hochladen zu Docker Hub
docker model push myorg/mymodel:latest
# Hochladen zu privatem Registry
docker login myregistry.com
docker model push myregistry.com/models/mymodel:latest
# Taggen und hochladen
docker model tag mymodel:latest myorg/mymodel:v1.0
docker model push myorg/mymodel:v1.0
API-Nutzung
OpenAI-kompatible Endpunkte
Docker Model Runner stellt automatisch OpenAI-kompatible APIs bereit:
# Starten Sie das Modell mit API
docker model run -d -p 8080:8080 --name llm ai/llama2
# Chat-Vervollständigung
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama2",
"messages": [{"role": "user", "content": "Hallo!"}]
}'
# Textgenerierung
curl http://localhost:8080/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama2",
"prompt": "Es war einmal",
"max_tokens": 100
}'
# Streaming-Antwort
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama2",
"messages": [{"role": "user", "content": "Erzählen Sie mir eine Geschichte"}],
"stream": true
}'
# Verfügbare Modelle über API auflisten
curl http://localhost:8080/v1/models
# Modellinformationen
curl http://localhost:8080/v1/models/llama2
Docker Compose-Konfiguration
Grundlegende Compose-Datei
version: '3.8'
services:
llm:
image: docker-model-runner
model: ai/llama2:7b-q4
ports:
- "8080:8080"
environment:
- MODEL_CONTEXT=4096
- MODEL_TEMPERATURE=0.7
volumes:
- model-data:/root/.cache
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
model-data:
Multi-Modell-Setup
version: '3.8'
services:
llama:
image: docker-model-runner
model: ai/llama2
ports:
- "8080:8080"
mistral:
image: docker-model-runner
model: ai/mistral
ports:
- "8081:8080"
embedding:
image: docker-model-runner
model: ai/nomic-embed-text
ports:
- "8082:8080"
Für erweiterte Docker Compose-Konfigurationen und -Befehle siehe unser Docker Compose Cheatsheet, das Netzwerk, Volumes und Orchestrierungsmuster abdeckt.
Umgebungsvariablen
Konfigurieren Sie das Modellverhalten mit Umgebungsvariablen:
# Kontextfenstergröße
MODEL_CONTEXT=4096
# Temperatur (0.0-1.0)
MODEL_TEMPERATURE=0.7
# Top-p-Sampling
MODEL_TOP_P=0.9
# Top-k-Sampling
MODEL_TOP_K=40
# Maximale Tokens
MODEL_MAX_TOKENS=2048
# Anzahl der GPU-Layers
MODEL_GPU_LAYERS=35
# Batch-Größe
MODEL_BATCH_SIZE=512
# Thread-Zahl (CPU)
MODEL_THREADS=8
# Aktivieren Sie detaillierte Protokollierung
MODEL_VERBOSE=true
# API-Schlüssel für Authentifizierung
MODEL_API_KEY=your-secret-key
Ausführen mit Umgebungsvariablen:
docker model run \
-e MODEL_CONTEXT=8192 \
-e MODEL_TEMPERATURE=0.8 \
-e MODEL_API_KEY=secret123 \
ai/llama2
GPU-Konfiguration
Automatische GPU-Erkennung
DMR erkennt automatisch verfügbare GPUs und nutzt sie:
# Alle GPUs verwenden
docker model run --gpus all ai/llama2
# Spezifische GPU verwenden
docker model run --gpus 0 ai/llama2
# Mehrere spezifische GPUs verwenden
docker model run --gpus 0,1,2 ai/llama2
# GPU mit Speicherbegrenzung
docker model run --gpus all --memory 16g ai/llama2
CPU-Only-Modus
Erzwingen Sie CPU-Inferenz, wenn eine GPU verfügbar ist:
docker model run --no-gpu ai/llama2
Multi-GPU-Tensor-Parallelität
Verteilen Sie große Modelle über GPUs:
docker model run \
--gpus all \
--tensor-parallel 2 \
ai/llama2-70b
Inspektion und Debugging
Modelldetails anzeigen
# Modellkonfiguration inspizieren
docker model inspect ai/llama2
# Modellschichten anzeigen
docker model history ai/llama2
# Modellgröße und Metadaten überprüfen
docker model inspect --format='{{.Size}}' ai/llama2
Protokolle und Überwachung
# Modellprotokolle anzeigen
docker model logs llm
# Protokolle in Echtzeit verfolgen
docker model logs -f llm
# Letzte 100 Zeilen anzeigen
docker model logs --tail 100 llm
# Protokolle mit Zeitstempeln anzeigen
docker model logs -t llm
Leistungsstatistiken
# Ressourcennutzung
docker model stats
# Spezifische Modellstatistiken
docker model stats llm
# Statistiken im JSON-Format
docker model stats --format json
Netzwerk
APIs freigeben
# Standardport (8080)
docker model run -p 8080:8080 ai/llama2
# Benutzerdefinierter Port
docker model run -p 3000:8080 ai/llama2
# Binden an eine bestimmte Schnittstelle
docker model run -p 127.0.0.1:8080:8080 ai/llama2
# Mehrere Ports
docker model run -p 8080:8080 -p 9090:9090 ai/llama2
Netzwerkkonfiguration
# Benutzerdefiniertes Netzwerk erstellen
docker network create llm-network
# Modell auf benutzerdefiniertem Netzwerk ausführen
docker model run --network llm-network --name llm ai/llama2
# Verbinden mit bestehendem Netzwerk
docker model run --network host ai/llama2
Sicherheit
Zugriffskontrolle
# Ausführen mit API-Schlüssel-Authentifizierung
docker model run \
-e MODEL_API_KEY=my-secret-key \
ai/llama2
# Verwenden mit Authentifizierung
curl http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer my-secret-key" \
-H "Content-Type: application/json" \
-d '{"model": "llama2", "messages": [...]}'
Registry-Authentifizierung
# Anmelden bei privatem Registry
docker login myregistry.com -u username -p password
# Herunterladen aus privatem Registry
docker model pull myregistry.com/private/model:latest
# Verwenden des Credentials-Helpers
docker login --password-stdin < token.txt
Best Practices
Modellauswahl
# Verwenden Sie quantisierte Modelle für schnellere Inferenz
docker model pull ai/llama2:7b-q4 # 4-Bit-Quantisierung
docker model pull ai/llama2:7b-q5 # 5-Bit-Quantisierung
docker model pull ai/llama2:7b-q8 # 8-Bit-Quantisierung
# Modellvarianten überprüfen
docker search ai/llama2
Ressourcenmanagement
# Speichergrenzen festlegen
docker model run --memory 8g --memory-swap 16g ai/llama2
# CPU-Grenzen festlegen
docker model run --cpus 4 ai/llama2
# GPU-Speicher begrenzen
docker model run --gpus all --gpu-memory 8g ai/llama2
Gesundheitsüberwachung
# Ausführen mit Gesundheitsüberwachung
docker model run \
--health-cmd "curl -f http://localhost:8080/health || exit 1" \
--health-interval 30s \
--health-timeout 10s \
--health-retries 3 \
ai/llama2
Produktionsorchestrierung
Für Produktionsbereitstellungen mit Kubernetes können Docker Model Runner-Container mit Standard-Kubernetes-Manifesten orchestriert werden. Definieren Sie Bereitstellungen mit Ressourcengrenzen, automatischer Skalierung und Lastverteilung. Für eine umfassende Kubernetes-Befehlsreferenz und Bereitstellungsmuster überprüfen Sie unser Kubernetes Cheatsheet.
# Beispiel: Bereitstellung im Kubernetes-Cluster
kubectl apply -f llm-deployment.yaml
# Bereitstellung skalieren
kubectl scale deployment llm --replicas=3
# Als Dienst freigeben
kubectl expose deployment llm --type=LoadBalancer --port=8080
Fehlerbehebung
Häufige Probleme
Modell startet nicht:
# Verfügbaren Festplattenspeicher überprüfen
df -h
# Detaillierte Fehlerprotokolle anzeigen
docker model logs --tail 50 llm
# GPU-Verfügbarkeit überprüfen
nvidia-smi # Für NVIDIA-GPUs
Speicherfehler:
# Kleineres quantisiertes Modell verwenden
docker model pull ai/llama2:7b-q4
# Kontextgröße reduzieren
docker model run -e MODEL_CONTEXT=2048 ai/llama2
# Batch-Größe begrenzen
docker model run -e MODEL_BATCH_SIZE=256 ai/llama2
Langsame Inferenz:
# GPU-Nutzung überprüfen
docker model stats llm
# Sicherstellen, dass GPU verwendet wird
docker model logs llm | grep -i gpu
# GPU-Layers erhöhen
docker model run -e MODEL_GPU_LAYERS=40 ai/llama2
Diagnosebefehle
# Systeminformationen
docker model system info
# Festplattennutzung
docker model system df
# Unbenutzte Ressourcen bereinigen
docker model system prune
# Vollständige Bereinigung (alle Modelle entfernen)
docker model system prune -a
Integrationsbeispiele
Python-Integration
import openai
# Client für Docker Model Runner konfigurieren
client = openai.OpenAI(
base_url="http://localhost:8080/v1",
api_key="not-needed" # DMR benötigt standardmäßig keinen Schlüssel
)
# Chat-Abschluss
response = client.chat.completions.create(
model="llama2",
messages=[
{"role": "user", "content": "Hallo!"}
]
)
print(response.choices[0].message.content)
# Streaming
stream = client.chat.completions.create(
model="llama2",
messages=[{"role": "user", "content": "Erzähl mir eine Geschichte"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
Bash-Skript
#!/bin/bash
# Modell starten, falls nicht läuft
if ! docker model ps | grep -q "llm"; then
docker model run -d --name llm -p 8080:8080 ai/llama2
echo "Warten, bis das Modell startet..."
sleep 10
fi
# API-Aufruf machen
curl -s http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama2",
"messages": [{"role": "user", "content": "'"$1"'"}]
}' | jq -r '.choices[0].message.content'
Node.js-Integration
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'http://localhost:8080/v1',
apiKey: 'not-needed'
});
async function chat(message) {
const completion = await client.chat.completions.create({
model: 'llama2',
messages: [{ role: 'user', content: message }]
});
return completion.choices[0].message.content;
}
// Verwendung
const response = await chat('Was ist Docker Model Runner?');
console.log(response);
Nützliche Links
Offizielle Dokumentation
- Docker Model Runner Offizielle Seite
- Docker Model Runner Dokumentation
- Docker Model Runner Einstiegshilfe
- Docker Model Runner Ankündigungsblog
Verwandte Cheat Sheets
- Docker Cheat Sheet
- Docker Compose Cheat Sheet - Die nützlichsten Befehle mit Beispielen
- Kubernetes Cheat Sheet
- Ollama Cheat Sheet