Unterschiede zwischen den Revisionen 1 und 2
Revision 1 vom 2011-01-07 18:41:32
Größe: 4048
Autor: anonym
Kommentar:
Revision 2 vom 2012-06-13 21:26:26
Größe: 4048
Autor: anonym
Kommentar: converted to 1.6 markup
Es wurden keine Änderungen gefunden!

Linux Container (LXC) bieten eine performante Möglichkeit zum Betrieb virtualisierter Linuxsysteme. Hierbei wird auf Kernelebene ein Linux mit eingeschränkten Rechten emuliert d.h. damit lassen sich weitere "Linuxe" virtualisieren. Hauptvorteile: Kernel ab 2.6.26 unterstützen Container ohne weitere Patches und es entsteht kaum Overhead, außer zusätzlich benötigter Plattenplatz (welcher aus finanzieller Sicht am günstigsten zu haben ist).

Installation & Konfiguration

  • Vorraussetzungen schaffen:

    aptitude install lxc bridge-utils debootstrap
    mkdir /cgroups
    echo "cgroup          /cgroup         cgroup  defaults        0       0" >> /etc/fstab
    mount /cgroups
    • Hier wird die notwendige userspace Software installiert und "cgroup" gemountet
  • virtuellen Linux Container anlegen:

mkdir -p /var/lib/lxc/lxc1 /usr/lib/lxc/templates/lxc-debian -p /var/lib/lxc/lxc1 }}}

  • An dieser Stelle wird im zunächst erstellten Verzeichnis ein Debiansystem mittels debootstrap installiert. "lxc1" ist der Name des virtuellen Systems.
  • /var/lib/lxc/lxc1 nach eigenen Wünschen anpassen und folgende Zeilen für das Netzwerk hinzufügen:

    lxc.utsname = lxc1
    lxc.network.type = veth
    lxc.network.flags = up
    lxc.network.link = br0
    # lxc.network.name = eth0
    lxc.network.hwaddr = 00:FF:12:34:56:78
    lxc.network.ipv4 = 172.16.2.2/24
    • Im virtuellen Linux sollte die Netzwerkadresse in etc/network/interfaces mit der "lxc.network.ipv4" übereinstimmen.

  • Netzwerkkrate in Bridgemode betreiben. Dazu in /etc/network/interfaces beispielsweise folgendes schreiben:

    #allow-hotplug eth0
    #iface eth0 inet dhcp
    
    auto br0
    iface br0 inet dhcp
            bridge_ports eth0
            bridge_fd 0
            bridge_maxwait 0
    • eth0 ist in diesem Fall die verwendete Netzwerkarte
  • Damit ist erstmal alles Grundsätzliche für den Betrieb von Linux Containern vorbereitet.

Test

  • Der Aufruf von lxc-checkconfig sollte eine ähnlich erfreuliche Ausgabe wie diese hervor bringen:

    lxc-checkconfig 
    [sudo] password for age: 
    Kernel config /proc/config.gz not found, looking in other places...
    Found kernel config file /boot/config-2.6.32-5-686
    --- Namespaces ---
    Namespaces: enabled
    Utsname namespace: enabled
    Ipc namespace: enabled
    Pid namespace: enabled
    User namespace: enabled
    Network namespace: enabled
    Multiple /dev/pts instances: enabled
    
    --- Control groups ---
    Cgroup: enabled
    Cgroup namespace: enabled
    Cgroup device: enabled
    Cgroup sched: enabled
    Cgroup cpu account: enabled
    Cgroup memory controller: missing
    Cgroup cpuset: enabled
    
    --- Misc ---
    Veth pair device: enabled
    Macvlan: enabled
    Vlan: enabled
    File capabilities: enabled
  • memory controller ist im Standard-Debian-Squeeze-Kernel nicht aktiv aber für's erste auch nicht weiter wild. Wer mag baut sich einen eigenen Kernel und aktiviert “General Setup -> Control Group support -> Resource Counters -> Memory Resource Controller for Control Groups

im laufenden Betrieb

  • Den eben erzeugten Linuxcontainer starten:

    lxc-start -n lxc1
  • Konsole in das virtuelle System:

    lxc-console -n lxc1
    • Kann im ersten Moment ein Weilchen dauern, bis die Konsole angezeigt wird.
    • ein zusätzliches -t 1 nutzt das erste tty, -t 2 das zweite usw...

    • alternativ läuft in dem Container ein ssh Server...
  • Stop mittels:

    lxc-stop -n lxc1

weiterführende Links

FaxeLXC (zuletzt geändert am 2016-03-16 10:31:28 durch anonym)


Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.