Tools
Docker Grundlagen: Container, Compose & Swarm
Warum Container die Basis jeder lokalen AI-Infrastruktur sind, wie Docker Compose funktioniert und wann du Docker Swarm brauchst.
Docker packt Software in Container — isolierte Einheiten, die überall gleich laufen. Für einen lokalen AI-Stack ist Docker die Grundlage: Ollama, Open WebUI, n8n, Grafana — alles läuft in Containern. Docker Compose orchestriert mehrere Container auf einem Rechner, Docker Swarm verteilt sie auf mehrere.
Was ist Docker?
Docker ist eine Plattform, die Software in Container verpackt. Ein Container enthält alles was die Software braucht — Code, Laufzeit-Umgebung, System-Bibliotheken, Konfiguration. Du installierst nicht mehr "Programm X auf Betriebssystem Y" sondern startest einen Container, der alles mitbringt.
Das löst das klassische Problem "bei mir funktioniert es aber": Container laufen auf deinem Laptop genauso wie auf einem Server.
Container vs. Virtuelle Maschinen
Container und VMs lösen ähnliche Probleme, aber auf verschiedenen Ebenen. Container sind leichtgewichtiger, VMs sind stärker isoliert.

Docker Container teilen sich den Host-Kernel, VMs haben jeweils ein eigenes Betriebssystem.
| Eigenschaft | Container (Docker) | Virtuelle Maschine |
|---|---|---|
| Startzeit | Sekunden | Minuten |
| Größe | MBs (Image) | GBs (volles OS) |
| Isolation | Prozess-Level (Kernel geteilt) | Hardware-Level (eigener Kernel) |
| Performance | Nahezu nativ | Overhead durch Hypervisor |
| GPU-Zugriff | NVIDIA Container Toolkit | GPU-Passthrough (IOMMU/PCIe) |
| Anwendungsfall | Services, Microservices, AI-Stacks | Komplette OS-Isolation, Windows auf Linux |
Für AI-Workloads: Docker Container für alles was schnell starten und leichtgewichtig sein soll (Ollama, n8n, Grafana). VMs für Hardware-Isolation (GPU Passthrough an eine dedizierte AI-VM) oder wenn du mehrere Betriebssysteme brauchst. In der Praxis: beides kombinieren — VMs für die Hosts, Container für die Services.
Docker Compose: Mehrere Container als Stack
Docker Compose definiert Multi-Container-Anwendungen in einer einzigen YAML-Datei. Statt 5 separate docker run Befehle zu tippen, schreibst du eine docker-compose.yml und startest alles mit einem Befehl.
Beispiel: Minimaler AI-Stack
# docker-compose.yml
services:
ollama:
image: ollama/ollama
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
depends_on:
- ollama
volumes:
ollama-data:Starten und Stoppen
# Stack starten (im Hintergrund)
docker compose up -d
# Status prüfen
docker compose ps
# Logs ansehen
docker compose logs -f ollama
# Stack stoppen
docker compose down
# Stack stoppen UND Volumes löschen (ACHTUNG: Daten weg!)
docker compose down -vdocker compose down -v löscht ALLE Volumes — also alle gespeicherten Modelle, Datenbanken, Konfigurationen. Ohne -v bleiben die Daten erhalten und der nächste docker compose up nutzt sie weiter.
Docker Swarm: Container über mehrere Rechner
Docker Swarm macht aus mehreren Rechnern einen Cluster. Services laufen auf dem Node, der gerade Kapazität hat. Fällt ein Node aus, werden die Container automatisch auf andere Nodes verschoben.
| Eigenschaft | Docker Compose | Docker Swarm |
|---|---|---|
| Hosts | 1 Rechner | Mehrere Rechner (Cluster) |
| High Availability | Nein | Ja (Auto-Failover) |
| Rolling Updates | Nein | Ja (Zero-Downtime) |
| Load Balancing | Nein (manuell) | Ja (Ingress Mesh) |
| Secrets Management | Umgebungsvariablen | Docker Secrets (verschlüsselt) |
| Komplexität | Niedrig | Mittel |
| Empfehlung | Entwicklung, kleine Setups | Produktion, mehrere Rechner |
Starte mit Docker Compose. Wenn du nur einen Rechner hast, reicht das völlig. Docker Swarm brauchst du erst wenn du mehrere Rechner hast und Services ausfallsicher betreiben willst. Die Compose-Dateien lassen sich mit kleinen Anpassungen als Swarm Stacks deployen.
GPU-Zugriff in Docker
Für AI-Workloads brauchen Container GPU-Zugriff. Das NVIDIA Container Toolkit macht GPUs in Docker verfügbar.
NVIDIA Treiber installieren
Auf dem Host-System müssen die NVIDIA-Treiber installiert sein. In Ubuntu: sudo apt install nvidia-driver-550
NVIDIA Container Toolkit
# Installation (Ubuntu/Debian)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey \
| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockerTesten
docker run --rm --gpus all nvidia/cuda:12.6.0-base-ubuntu24.04 nvidia-smiDocker Swarm hat KEINE native GPU-Unterstützung für --gpus. Workaround: Node Labels setzen (z.B. gpu=rtx3090) und Services per placement constraints auf GPU-Nodes pinnen. Zusätzlich das NVIDIA Runtime als Default in /etc/docker/daemon.json setzen.
Praxis-Tipps für den Alltag
| Situation | Befehl | Was es tut |
|---|---|---|
| Container läuft nicht | docker compose logs service-name | Zeigt Fehlermeldungen des Containers |
| Disk voll | docker system prune -a | Löscht ungenutzte Images, Container, Netzwerke |
| Neustart nach Update | docker compose pull && docker compose up -d | Zieht neue Images und startet Container neu |
| In Container schauen | docker exec -it container-name bash | Öffnet Shell im laufenden Container |
| Ressourcen prüfen | docker stats | Zeigt CPU, RAM, Netzwerk pro Container |
Docker-Container können extrem grosse Logfiles erzeugen. Setze in der docker-compose.yml pro Service ein Log-Limit: logging: options: max-size: "50m". Ohne dieses Limit haben wir in der Praxis schon 55 GB Logfiles gesehen.
Das Wichtigste
- ✓Container sind leichtgewichtiger als VMs — Sekunden statt Minuten zum Starten, MBs statt GBs.
- ✓Docker Compose definiert Multi-Container-Stacks in einer YAML-Datei. Ein Befehl startet alles.
- ✓Docker Swarm verteilt Container auf mehrere Rechner mit Auto-Failover. Brauchst du erst ab 2+ Nodes.
- ✓GPU in Docker braucht das NVIDIA Container Toolkit. In Swarm: Node Labels + Placement Constraints.
- ✓Volumes sind deine Daten. docker compose down -v löscht ALLES. Ohne -v bleiben Daten erhalten.
Quellen
- Docker Documentation: Get Started — Offizielle Einführung in Docker
- Docker Compose Documentation — Referenz für docker-compose.yml
- Docker Swarm Mode — Swarm-Architektur und Befehle
- NVIDIA Container Toolkit — GPU-Zugriff in Docker-Containern
War dieser Artikel hilfreich?
Nächster Schritt: Workflows sauber in Betrieb bringen
Nutze bewährte n8n-Patterns, Templates und Integrationen für Workflows, die lokal, dokumentiert und auditierbar bleiben.
- Lokal und self-hosted gedacht
- Dokumentiert und auditierbar
- Aus eigener Runtime entwickelt
- Made in Austria