Unterschiede zwischen den Revisionen 2 und 3
Revision 2 vom 2012-06-13 21:26:26
Größe: 4048
Autor: anonym
Kommentar: converted to 1.6 markup
Revision 3 vom 2016-03-16 10:31:28
Größe: 4138
Autor: anonym
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 2: Zeile 2:

Dokumentation: https://wiki.debian.org/LXC
Zeile 43: Zeile 45:
[sudo] password for age:
Zeile 73: Zeile 74:
= Container anlegen =
 * lxc-create -n lxc1 -t debian -- -r jessie

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

Dokumentation: https://wiki.debian.org/LXC

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

Container anlegen

  • lxc-create -n lxc1 -t debian -- -r jessie

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.