Debian LXC

Aus Wiki
Zur Navigation springen Zur Suche springen

Einleitung

LXC (Linux Container) erstellt mehrere isolierte, sichere virtuelle Umgebungen (Virtual Environments, kurz VEs) auf einem einzigen physischem Server, sorgt so für eine bessere Serverausnutzung und stellt sicher, dass Programme (Applikationen) nicht miteinander in Konflikt geraten. Jede VE arbeitet und verhält sich genau wie ein eigenständiger Server; VEs können unabhängig voneinander neu gestartet werden und haben Root-Zugriff, Benutzer, IP-Adressen, Speicher, Prozesse, Dateien, Programme, Systembibliotheken und Konfigurationsdateien.

Im Vergleich zu Virtuellen Maschinen von VMware bzw Virtualbox oder zu Para-Virtualisierungstechnologien wie Xen bietet OpenVZ weniger Flexibilität, was die Auswahl von Gast-Betriebssystemen betrifft: sowohl Gast- als auch Host-Betriebssystem muss Linux sein (obwohl verschiedene Linux-Distributionen in verschiedenen VEs eingesetzt werden können).

Im Gegensatz zu OpenVZ ist LXC Bestandteil des Mainline Kernel und erfordert somit keinerlei spezielle Patches, wie dies bei OpenVZ erforderlich ist. D.h. es wird im Rahmen des "normalen" Linux-Kernels weiterentwickelt und sollte deshalb in Zukunft gegenüber OpenVZ bevorzugt werden. Der Nachfolger des aktuellen Squeeze stellt vermutlich den Support für OpenVZ ein.


Installation LXC

Nachdem LXC Bestandteil des Kernels ist, sind lediglich Userspace-Tools für die Verwaltung der LXC-Container erforderlich.

apt-get update
apt-get install lxc bridge-utils


Konfiguration des Host

Für die Nezwerkverwaltung benötiogt LXC eine Netzwerkbrücke (Bridge) auf dem Host.

vi /etc/network/interfaces

Z.B. vorhandene Einstallungen:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
   address 192.168.100.111
   netmask 255.255.255.0
   gateway 192.168.100.1

Die physikalische Netzwerkschnittstelle (z.B. eth0) auf manual setzen (und die iface-Einstellungen auskommentieren):

auto eth0
iface eth0 inet manual
#iface eth0 inet static
#   address 192.168.100.111
#   netmask 255.255.255.0
#   gateway 192.168.100.1
#   broadcast 192.168.100.255

Stattdessen die Bridge automatisch konfigurieren:

auto br0
iface br0 inet static
  address 192.168.100.111
  netmask 255.255.255.0
  gateway 192.168.100.1
  broadcast 192.168.100.255
  bridge_ports eth0
  bridge_fd 0
  bridge_maxage 12
  bridge_stp off

Netzwerk neu starten, um die Änderungen zu übernehmen:

/etc/init.d/networking restart


LXC Templates

Im Verzeichnis /usr/lib/lxc/templates/ liegen Templates für die Installation von Debian (Lenny), Ubuntu und Fedory Distributionen als Gast Container.

Durch eine kleien Änderung des Debian-Templates kann dieses anstatt einer Lenny auch eine Squeeze Distribution installieren:

cp /usr/lib/lxc/templates/lxc-debian /usr/lib/lxc/templates/lxc-squeeze
chmod +x /usr/lib/lxc/templates/lxc-squeeze
vi /usr/lib/lxc/templates/lxc-squeeze
  • In Zeile 93: dhcp-client durch isc-dhcp-client ersetzen
  • In Zeile 113: lenny durch squeeze ersetzen
  • In Zeile 139: cache="/var/cache/lxc/debian" durch cache="/var/cache/lxc/squeeze" ersetzen
  • In Zeile 223: cache="/var/cache/lxc/debian" durch cache="/var/cache/lxc/squeeze" ersetzen


LXC Container anlegen

Die Container (Root Filesystem des Gastbetriebssystems) werden in Unterverzeichnissen unter /var/lib/lxc abgelegt. Beispielhaft wird hier ein Debian Gast-Container (Squeeze) mit Namen debian angelegt.

cd /var/lib/lxc
mkdir debian
/usr/lib/lxc/templates/lxc-squeeze -p /var/lib/lxc/debian/