# Docker on Proxmox: Strategien für Microservices & Orchestrierung
TL;DR / Management Summary Viele Administratoren versuchen, Docker direkt in einem Proxmox LXC-Container zu betreiben. Dies führt jedoch oft zu komplexen Kernel-Fehlern und Storage-Problemen. Ein Senior Admin nutzt für Docker-Workloads eine schlanke virtuelle Maschine (VM) auf Debian-Basis. Dies bietet echte Kernel-Isolation, volle Unterstützung für alle Docker-Storage-Treiber (overlay2) und eine saubere Integration in Tools wie Portainer oder Docker Compose.
# 1. Die Gretchenfrage: VM vs. LXC
Warum wir VMs bevorzugen.
- LXC (Docker-in-LXC):
- Nachteil: Erfordert “Nesting” und privilegierte Rechte. Unsicher (Artikel 679).
- Problem: Viele Docker-Images erwarten Kernel-Features, die im LXC-Namespace fehlen.
- VM (Empfohlen):
- Vorteil: Eigener Kernel. Docker läuft exakt so, wie vom Hersteller vorgesehen.
- Vorteil: Einfache Snapshots und Live-Migration (Artikel 672).
# 2. Einrichtung des Docker-Hosts
In 5 Minuten zur Plattform.
# Schritt 1: VM erstellen
Erstellen Sie eine VM (ID 1000) mit Debian 12 (Artikel 667).
- CPU: 2-4 Kerne.
- RAM: 4 GB+.
- Disk: 40 GB+ (VirtIO SCSI Single).
# Schritt 2: Docker Installation (im Gast)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
# 3. Deep Dive: Portainer für die Übersicht
GUI-Power für Docker.
Verwalten Sie hunderte Docker-Container bequem via Web-Interface.
docker volume create portainer_data
docker run -d -p 9443:9443 --name portainer --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
- Aktion: Öffnen Sie
https://<VM-IP>:9443, um Ihre Container visuell zu steuern.
# 4. Day-2 Operations: Persistente Daten
Wo landen die Volumes?
Sichern Sie Docker-Daten niemals nur im Container!
- Methode A: Docker Volumes auf einem NFS-Share (Artikel 657).
- Methode B: Bind-Mounts in das VM-Dateisystem, das via Proxmox Backup (Artikel 671) gesichert wird.
# 5. Troubleshooting & “War Stories”
Wenn der Wal nicht schwimmt.
# Top 3 Fehlerbilder
-
Symptom: “Docker socket not found”.
- Ursache: Der User hat keine Berechtigung für
/var/run/docker.sock. - Lösung: User zur Gruppe
dockerhinzufügen odersudonutzen.
- Ursache: Der User hat keine Berechtigung für
-
Symptom: Disk-Space am Docker-Host ist voll.
- Lösung: Alte Images und ungenutzte Volumes löschen:
docker system prune -a --volumes.
- Lösung: Alte Images und ungenutzte Volumes löschen:
-
Symptom: Docker-in-LXC schlägt fehl mit “Storage Driver error”.
- Ursache: LXC auf ZFS kann kein Overlay2 für Docker.
- Fix: Nutzen Sie eine VM oder stellen Sie den Docker-Storage-Driver mühsam auf
zfsum (nicht empfohlen).
# “War Story”: Der “Auto-Update” Albtraum
Ein Admin aktivierte Watchtower, um seine Docker-Container automatisch zu aktualisieren.
Das Ereignis: Watchtower lud ein neues Image der zentralen Datenbank herunter. Das neue Image hatte eine neue Konfigurations-Struktur.
Das Ergebnis: Die Datenbank startete nicht mehr, die Applikation war offline. Der Admin wusste nicht einmal, welche Version vorher lief.
Lehre: Nutzen Sie Automatik-Tools wie Watchtower nur in Test-Umgebungen. In der Produktion nutzen Sie Docker Compose mit festen Versionstags (z.B. postgres:15.3 statt postgres:latest).
# 6. Monitoring & Reporting
Ressourcen im Blick.
# cAdvisor
Nutzen Sie Google cAdvisor als Container, um Metriken direkt an Prometheus (Artikel 646) zu senden.
- KPI:
container_memory_usage_bytes.
# 7. Fazit & Empfehlung
Docker und Proxmox sind ein starkes Team, wenn man sie richtig trennt.
- Empfehlung: Erstellen Sie eine dedizierte Docker-VM pro Projekt/Abteilung.
- Wichtig: Nutzen Sie Docker Compose für die Dokumentation Ihrer Stacks. Eine
.ymlDatei ist Ihr wichtigstes Konfigurations-Backup.
# Anhang: Cheatsheet (Docker CLI)
| Aufgabe | Befehl |
|---|---|
| Laufende Container | docker ps |
| Logs einsehen | docker logs -f <name> |
| Stack starten | docker-compose up -d |
| Container Shell | docker exec -it <name> bash |