LXC Linux-Container: Erste Schritte

LXC (Linux Containers) mit LXD bietet leichtgewichtige System-Container, die sich wie vollständige virtuelle Maschinen verhalten, aber deutlich weniger Ressourcen verbrauchen. Im Gegensatz zu Docker-Anwendungscontainern führen LXC-Container ein vollständiges Betriebssystem aus und eignen sich hervorragend als VM-Ersatz für Entwicklung, Tests und Produktion.

LXD installieren und initialisieren

Installieren Sie LXD und führen Sie die Erstkonfiguration durch:

sudo snap install lxd
sudo lxd init

Bei der Initialisierung werden Sie nach Storage-Backend, Netzwerk und Standardeinstellungen gefragt. Für die meisten Anwendungsfälle eignen sich die Standardwerte. Wählen Sie zfs oder btrfs als Storage-Backend für optimale Performance:

sudo usermod -aG lxd $USER
newgrp lxd
lxc version

Überprüfen Sie die verfügbaren Images:

lxc image list images: | grep ubuntu
lxc image list images: ubuntu/24.04

Container erstellen und verwalten

Erstellen und starten Sie Ihren ersten Container:

lxc launch images:ubuntu/24.04 webserver
lxc list
lxc info webserver

Greifen Sie auf die Container-Shell zu und installieren Sie Software:

lxc exec webserver -- bash
lxc exec webserver -- apt update
lxc exec webserver -- apt install nginx -y

Konfigurieren Sie Ressourcenlimits für den Container:

lxc config set webserver limits.cpu 2
lxc config set webserver limits.memory 1GB
lxc config set webserver limits.memory.enforce hard

Dateien können einfach zwischen Host und Container übertragen werden:

lxc file push localfile.txt webserver/root/
lxc file pull webserver/var/log/syslog ./container-syslog.log

Netzwerk und Profile

Richten Sie Port-Weiterleitung ein, um Dienste im Container von außen zugänglich zu machen:

lxc config device add webserver http proxy listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80

Erstellen Sie benutzerdefinierte Profile für wiederverwendbare Konfigurationen:

lxc profile create webserver-profile
lxc profile set webserver-profile limits.cpu 2
lxc profile set webserver-profile limits.memory 2GB
lxc profile device add webserver-profile root disk pool=default path=/
lxc launch images:ubuntu/24.04 app1 --profile webserver-profile

Für die direkte Netzwerkanbindung konfigurieren Sie einen macvlan-Adapter:

lxc profile device add bridged-profile eth0 nic nictype=macvlan parent=eth0

Snapshots und Backups

Erstellen Sie Snapshots zur Sicherung des Container-Zustands:

lxc snapshot webserver snap-initial
lxc info webserver | grep -A5 Snapshots
lxc restore webserver snap-initial

Richten Sie automatische Snapshots ein:

lxc config set webserver snapshots.schedule "0 */12 * * *"
lxc config set webserver snapshots.expiry 7d
lxc config set webserver snapshots.pattern snap-%d

Exportieren Sie Container-Backups für die externe Sicherung:

lxc export webserver webserver-backup.tar.gz --optimized-storage
lxc import webserver-backup.tar.gz restored-webserver

Für Produktionsumgebungen empfiehlt sich die Kombination aus automatischen Snapshots und regelmäßigen Exports auf externen Speicher. Überwachen Sie die Container-Ressourcennutzung mit lxc info --resources und planen Sie die Kapazität entsprechend.