LXC-Container verstehen#
Ein LXC-Container ist eine abgegrenzte Linux-Umgebung mit eigenen Prozessen, Benutzern, Systemdateien und Netzwerkanschluessen. Er kann sich wie ein kleiner Server bedienen lassen: Pakete installieren, Dienste mit systemd starten und per SSH zugreifen. Dabei verwendet er den Kernel des Hosts. Eine Ubuntu-Installation im Container bringt also Ubuntu-Programme mit, startet aber keinen eigenen Ubuntu-Kernel. LXC: Einfuehrung
Im Homelab verwaltet Proxmox VE diese Container.
Der LXC 120 mit dem Namen coolify ist die Umgebung fuer
Coolify.
LXC, virtuelle Maschine und Docker#
| Ebene | Was sie bereitstellt | Verwendung hier |
|---|---|---|
| Virtuelle Maschine | virtuelle Hardware und ein Betriebssystem mit eigenem Kernel | fuer Systeme, die einen eigenen Kernel oder staerkere Isolation brauchen |
| LXC | eine Linux-Umgebung auf dem Kernel des Hosts | Ubuntu mit Paketverwaltung, SSH und Docker |
| Docker | Images und Container fuer Anwendungen und ihre Abhaengigkeiten | die von Coolify betriebenen Dienste |
Linux trennt die Sicht der Prozesse unter anderem durch Namespaces. cgroups begrenzen und verteilen Ressourcen wie Arbeitsspeicher und CPU-Zeit. Dass ein Container eine eigene IP und ein eigenes Dateisystem hat, macht ihn noch nicht zu einer VM. LXC: verwendete Kernel-Funktionen
Was unprivilegiert bedeutet#
Im Container kann ich root sein, ohne damit dieselbe Benutzer-ID wie root auf dem
Proxmox-Host zu haben. Bei einem unprivilegierten LXC werden die Benutzer-IDs auf
andere, unprivilegierte IDs des Hosts abgebildet. Die Kernel-Grenze bleibt trotzdem
gemeinsam; fuer besonders hohe Isolationsanforderungen ist eine VM die passendere Wahl.
Proxmox: Container und Isolation
Fuer Docker innerhalb dieses LXC sind zwei Features aktiviert:
| Feature | Aufgabe |
|---|---|
nesting=1 | erlaubt verschachtelte Container und die dafuer benoetigte Sicht auf Systemdateisysteme |
keyctl=1 | erlaubt den keyctl()-Systemaufruf, den Proxmox fuer Docker in unprivilegierten Containern voraussetzt |
Diese Freigaben erweitern, was der Gast tun darf. Der Container bleibt unprivilegiert. Proxmox: Feature-Referenz
Den Coolify-LXC anlegen#
Die folgenden Befehle gehoeren auf den Proxmox-Host als root. Sie setzen x86-64,
eine freie CT-ID 120, Template-Storage local, Container-Storage local-lvm und die
Bridge vmbr0 voraus. Diese Namen und Ressourcen muessen zum jeweiligen Host passen.
Zuerst den Template-Katalog aktualisieren und das Ubuntu-24.04-Template herunterladen:
pveam update
COOLIFY_TEMPLATE=$(pveam available --section system \
| awk '$2 ~ /^ubuntu-24\.04-standard_.*_amd64/ {print $2; exit}')
pveam download local "${COOLIFY_TEMPLATE:?Kein Ubuntu-24.04-Template gefunden}"Nach erfolgreichem Download in derselben Shell den Container erstellen. Der Befehl verwendet direkt die endgueltige statische Netzkonfiguration; beim urspruenglichen Aufbau wurde die Adresse erst nach dem Start von DHCP auf statisch umgestellt.
pct create 120 "local:vztmpl/${COOLIFY_TEMPLATE}" \
--hostname coolify \
--ostype ubuntu \
--unprivileged 1 \
--features nesting=1,keyctl=1 \
--cores 4 \
--memory 4096 \
--swap 512 \
--rootfs local-lvm:40 \
--net0 name=eth0,bridge=vmbr0,ip=10.10.10.20/24,gw=10.10.10.1 \
--nameserver 10.10.10.3 \
--onboot 1 \
--start 1--onboot aktiviert den Start beim Hochfahren des Hosts, --start startet den neuen
Container sofort. --swap 512 erlaubt bis zu 512 MiB des auf dem Host vorhandenen Swap;
es legt keine eigene Swap-Datei an.
Proxmox: Templates,
pct-Befehlsreferenz
IP-Adresse und VLAN gehoeren zusammen#
10.10.10.20/24 ist die Adresse dieses Aufbaus, kein allgemeiner Vorgabewert. Vor einer
erneuten Verwendung muessen Belegung und DHCP-Bereich in der UDM geprueft werden. Eine
statisch vergebene Adresse darf keinem anderen Geraet zugeordnet sein und muss von der
dynamischen Vergabe ausgeschlossen sein.
Im Hypervisor-Port-Profil
ist Server-VLAN 10 native/untagged. Deshalb enthaelt net0 hier keinen tag=10.
Wird das Server-VLAN stattdessen getaggt bis zum Host gefuehrt, muss auch die Konfiguration
von Switch, Bridge und Gast dazu passen. Die IP allein waehlt kein VLAN aus.
In den Container wechseln#
Auf dem Host:
pct enter 120Ab jetzt laufen die Befehle im LXC. Dort das Passwort fuer die Konsolenanmeldung setzen und die Netzkonfiguration pruefen:
passwd
ip -4 -br addr show eth0
ip -4 route
getent hosts coolify.ioErwartet werden 10.10.10.20/24, eine Standardroute ueber 10.10.10.1 und eine
erfolgreiche Namensaufloesung. Mit exit geht es zurueck auf den Host. Die naechsten
Schritte stehen unter Coolify installieren.
Was Proxmox sichert#
Ein Container-Backup kann das Root-Dateisystem samt installierten Diensten enthalten. Bei zusaetzlichen Mountpoints kommt es auf deren Typ und Backup-Einstellung an; Bind-Mounts vom Host werden von diesen Backups nicht erfasst. Fuer Datenbanken braucht es ausserdem eine konsistente Sicherung und einen geprueften Wiederherstellungsweg. Proxmox: Container-Backups
Die Mitgliedschaft des Hosts im Cluster xlab
erstellt keine zweite Kopie der Container-Disk. Hier bleibt sie auf dem lokalen
local-lvm des jeweiligen Nodes.