Docker vs. LXC in Proxmox: Wann was?
Docker ist allgegenwärtig. LXC ist die native Proxmox-Container-Technologie. Der Fehler ist, sie als Konkurrenten zu sehen — sie sind komplementär.
LXC: Der Proxmox-Native
LXC-Container in Proxmox verhalten sich wie schlanke VMs. Sie booten ein vollständiges Betriebssystem, haben systemd, bekommen eine eigene IP und lassen sich wie eine VM verwalten — Snapshot, Migration, Backup per PBS.
Der Overhead ist minimal, weil sie denselben Kernel wie der Host nutzen. Das macht LXC ideal für Dienste, die keine speziellen Kernel-Module brauchen: Webserver, Datenbanken, kleine Python-Dienste.
Privilegiert oder unprivilegiert?
Proxmox legt LXC standardmässig unprivilegiert an — und dabei sollte es bleiben. Root im Container ist dann eben nicht Root auf dem Host (User-Namespace-Mapping), was die Angriffsfläche entscheidend verkleinert. Privilegierte Container braucht man nur für Sonderfälle (bestimmte Mounts, GPU-Durchreichung) — und sollte dann genau wissen, warum.
Docker: Der App-Container
Docker verpackt Anwendungen mit allen Abhängigkeiten in ein Image. Es läuft nicht nativ auf Proxmox — entweder in einer VM oder, pragmatisch, in einer schlanken Ubuntu-LXC, die Docker hostet.
# In einer LXC: Docker installieren, dann:
docker run -d --name metabase -p 3000:3000 metabase/metabase
Docker ist stark für isolierte Applikationen, die mit einem Befehl starten sollen und deren Upstream-Images gepflegt werden. Uptime Kuma, Metabase, n8n, Paperless-ngx — alles Docker-first.
Der Docker-in-LXC-Fallstrick
Wer Docker in einer LXC fahren will, muss am Container das Feature nesting=1 (und je nach Image keyctl=1) setzen — sonst scheitert der Docker-Daemon kommentarlos. Offiziell empfiehlt Proxmox Docker in einer VM; die LXC-Variante ist die pragmatische Abkürzung, die man bewusst und mit diesem Wissen wählt.
Die Entscheidungsmatrix
| Kriterium | LXC | Docker |
|---|---|---|
| Proxmox-Integration (Snapshot, Migration) | Voll | Nur via VM |
| Image-Bau & Reproduzierbarkeit | Aufwendig | Dockerfile, trivial |
| Upstream-Images | Selten | Standard |
| Persistente Daten | Bind-Mount / Container-FS | Volumes oder Bind-Mounts |
| Isolation | Unprivilegiert: gut | Kernel-geteilt oder VM-getrennt |
| Wartung (OS-Updates) | Wie VM, apt update | Image neu bauen/pullen |
Unsere Faustregel
- Docker in einer dedizierten VM für Applikationen, die Docker-Images bevorzugen — eine VM mit Ubuntu Server und Docker, die nur dafür existiert. Proxmox sichert die ganze VM per PBS.
- Reine LXC für Datenbanken (PostgreSQL, SQL Server auf Linux) und selbstgeschriebene Dienste — wegen Snapshot-Fähigkeit und PBS-Integration ohne Zusatzschicht. Persistente Daten landen sauber auf einem Bind-Mount.
- Niemals Docker direkt auf dem Proxmox-Host — das verschmutzt den Hypervisor und untergräbt die Trennung.
Der typische Fehler
Alles in Docker zu stecken, auch PostgreSQL, auch die 500-GB-Datenbank. Dann ein Docker-Update, das Volume-Verhalten ändert sich, und das Produktivsystem steht. Datenbanken gehören in LXC oder VMs — wegen Stabilität, nicht wegen Dogma.
Fazit
LXC und Docker schliessen sich nicht aus. LXC für System-Dienste mit langem Lebenszyklus, Docker für Applikationen mit fertigen Images und kurzer Lebensdauer. Die Kunst ist, sie in derselben Infrastruktur parallel zu betreiben, ohne dass sie sich ins Gehege kommen.
Wann wähle ich LXC und wann Docker in Proxmox?+
LXC für System-Dienste mit langem Lebenszyklus — Datenbanken wie PostgreSQL oder selbstgeschriebene Dienste — wegen Snapshot-Fähigkeit und direkter PBS-Integration. Docker für Applikationen mit fertigen Upstream-Images und kurzer Lebensdauer wie Metabase oder n8n. Die Kunst ist, beide parallel zu betreiben, ohne dass sie sich ins Gehege kommen. Niemals Docker direkt auf dem Proxmox-Host.
Können wir Docker in einer LXC betreiben?+
Ja, aber bewusst. Proxmox empfiehlt offiziell Docker in einer VM. Wer die pragmatische LXC-Variante wählt, muss am Container das Feature nesting=1 setzen (je nach Image auch keyctl=1), sonst scheitert der Docker-Daemon kommentarlos. Eine schlanke Ubuntu-LXC, die Docker hostet, ist die übliche Abkürzung — gewusst wie.
Warum gehören Datenbanken nicht in Docker?+
Wegen Stabilität, nicht wegen Dogma. Wer alles in Docker steckt, auch PostgreSQL und die 500-GB-Datenbank, riskiert, dass ein Docker-Update das Volume-Verhalten ändert und das Produktivsystem steht. Datenbanken gehören in LXC oder VMs mit persistenten Daten auf einem Bind-Mount. Docker glänzt bei isolierten Apps mit gepflegten Images, nicht bei dauerhafter Zustandshaltung.