# 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.

  1. 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.
  2. 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).

# 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

# 4. Day-2 Operations: Persistente Daten

Wo landen die Volumes?

Sichern Sie Docker-Daten niemals nur im Container!


# 5. Troubleshooting & “War Stories”

Wenn der Wal nicht schwimmt.

# Top 3 Fehlerbilder

  1. Symptom: “Docker socket not found”.

    • Ursache: Der User hat keine Berechtigung für /var/run/docker.sock.
    • Lösung: User zur Gruppe docker hinzufügen oder sudo nutzen.
  2. Symptom: Disk-Space am Docker-Host ist voll.

    • Lösung: Alte Images und ungenutzte Volumes löschen: docker system prune -a --volumes.
  3. 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 zfs um (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.


# 7. Fazit & Empfehlung

Docker und Proxmox sind ein starkes Team, wenn man sie richtig trennt.


# 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

# Referenzen