Allgemeine Einstellungen
Für die Einrichtung von lxc habe ich in /etc/lxc/lxc.conf den Ort für die Container angepasst, da ich sie gern unter /srv und nicht /var hätte, weil es sich bei mir zum Beispiel besser in die Backup-Skripte einpasst.
lxc.lxcpath=/srv/lxc
Ein System erstellen
Folgender Befehl erstellt ein neues Debian-System. Das Paket lxc muss zusätzlich installiert werden, da sonst lxc-execute aus einem Unstable heraus nicht funktioniert.
lxc-create -t debian -n debian.stable -- --mirror=https://ftp.de.debian.org/debian --packages=lxc
Um einen 32-Bit-Container zu erstellen, kann man die Architektur als Option angeben oder man stellt dem lxc-create-Befehl ein linux32 voran, das für den aufgerufenen Befehl die Architektur umschaltet.
lxc-create -t debian -n debian32.stable -- -a i386 --mirror=https://ftp.de.debian.org/debian --packages=lxc
LXC-Befehle um mit einem System zu arbeiten
- Die verfügbaren Container auflisten:
lxc-ls --fancy
- Einmalig einen Befehl in abgeschaltetem Container ausführen:
lxc-exectue -n debian.stable
- Ein System starten/stoppen:
lxc-start -n debian.stable
bzw.lxc-stop -n debian.stable
- Eine Shell in einem laufenden System öffnen:
lxc-attach -n debian.stable
- Einen Befehl in einem laufendem System ausführen
lxc-attach -n debian.stable -- ps fax
- Auf die Konsole N (1–4) eines Systems zugreifen:
lxc-console -n debian.stable -t N
um sich als root anmelden zu können, muss man zuvor das Passwort setzenlxc-exectue -n debian.stable passwd
. Von der Konsole kann man mit Ctrl-a q trennen, wobei diese aber in dem Zustand verbleibt, so dass man sich ähnlich wie mit picocom über die serielle Schnittstelle wieder verbinden kann. - Status abfragen:
lxc-info -n debian.stable
Netzwerkeinstellungen
Um die Netzwerkeinstellungen unverändert vom Hauptsystem zu übernehmen, muss man
in der Container-Config-Datei die Option lxc.net.0.type = none
setzen.
Dateisysteme einbinden
Man kann Teile des Dateisystems auch in die LXC-Umgebung einbinden. In der Container-Config-Datei setzt man dafür die Einträge lxc.mount.entry wie die Einträge in der fstab, wobei das Ziel (2. Teil) relativ zum Wurzelverzeichnis des Containers angegeben werden muss.
lxc.mount.entry = /home ./home none ro,bind 0 0
lxc.mount.entry = /mnt/other ./mnt none ro,bind 0 0
X11-Anwendungen per SSH ausführen
Zum Ausführen von grafischen Anwendungen aus einer LXC-Umgebung heraus muss man
in der Umgebung das Paket xauth installiert haben und für den SSH-Server die
Option AddressFamily inet
in der sshd_config setzen (sonst meldet sshd
»Failed to allocate internet-domain X11 display socket error.«).
Die Programme kann man dann vom Hauptsystem mit dem laufenden X-Server aus per ssh starten:
ssh -Y root@127.0.0.1 xeyes
Ein anderer Ansatz wird unter LXC 1.0: GUI in containers beschrieben.