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#

EbeneWas sie bereitstelltVerwendung hier
Virtuelle Maschinevirtuelle Hardware und ein Betriebssystem mit eigenem Kernelfuer Systeme, die einen eigenen Kernel oder staerkere Isolation brauchen
LXCeine Linux-Umgebung auf dem Kernel des HostsUbuntu mit Paketverwaltung, SSH und Docker
DockerImages und Container fuer Anwendungen und ihre Abhaengigkeitendie 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:

FeatureAufgabe
nesting=1erlaubt verschachtelte Container und die dafuer benoetigte Sicht auf Systemdateisysteme
keyctl=1erlaubt 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 120

Ab 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.io

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