AA_8980100_123rf_bayberry.jpg

© Bayberry, 123RF

Containerverwaltung mit LXC

Getrennte Welten

Per Chroot starten Sie ein weitgehend autonomes Gastsystem auf einem Rechner, ohne dabei die Hardware zu emulieren. Die Containerverwaltung LXC verfeinert diese Technik mit umfangreichen Zusatzfunktionen.

Seit mehreren Jahren ermöglicht LXC ("Linux Containers") das Anlegen autonomer, vom restlichen System abgeschotteter Verzeichnisteilbäume. Im Gegensatz zu anderen Systemen nutzt LXC [1] dafür jedoch keine virtuellen Maschinen wie etwa Vmware, sondern erzeugt eine virtuelle Umgebung – zwar mit eigenen Prozessen, aber einem gemeinschaftlich genutzten Kernel des Hostsystems.

Erste Schritte

Die folgende Beschreibung bezieht sich auf Debian 8.0 "Jessie" als Wirt, lässt sich aber mit kleineren Änderungen auch auf andere Systeme wie OpenSuse oder Ubuntu übertragen.

Zunächst einmal installieren Sie die Pakete lxc, lxctl und libvirt-bin samt den vom Paketmanagement angeforderten Abhängigkeiten wie debootstrap. Bei eigenen Kernel-Konstrukten müssen Sie die Control Groups (Cgroups) aktivieren – prüfen Sie das gegebenenfalls über einen Aufruf des Kommandos lxc-checkconfig.

Abhängig von der Installationsquelle nimmt das Anlegen des Wurzel-Dateisystems für einen Container einige Zeit in Anspruch. Unter Debian erledigen Sie diese Aufgabe mit dem Befehl aus der ersten Zeile von Listing 1. Der Schalter LANG legt dabei bereits die Spracheinstellungen fest, SUITE definiert die gewünschte Vorlage. Mit der Option -n benennen Sie den Container (Abbildung 1). LXC verwendet für das Anlegen des Subsystems Vorlagen aus dem Verzeichnis /usr/share/lxc/templates/, die Sie hinter dem Schalter -t angeben. Es geht auch kürzer, wie ein alternativer Vorschlag aus dem Debian-Wiki [2] zum Erstellen des Containers zeigt (Zeile 2).

Listing 1

$ LANG=de_DE.UTF-8 SUITE=jessie MIRROR=http://httpredir.debian.org/debian lxc-create -n debian8 -t debian
$ lxc-create -n debian8 -t debian -- -r jessie
Abbildung 1: Beim Anlegen eines neuen Containers lädt LXC sämtliche benötigten Elemente aus dem Internet herunter und richtet ihn quasi schlüsselfertig ein.

Nach erfolgreicher Installation endet die Prozedur mit der Ausgabe eines zufällig generierten Root-Passworts. Notieren Sie es, und vergeben Sie nach dem ersten Anmelden im Container via passwd ein eigenes. Die Eingabe von lxc-ls listet alle vorhandenen Container auf.

Um auf lokaler Ebene auf den soeben angelegten Container zuzugreifen, starten Sie diesen mit dem Kommando lxc-start -n debian8 -d. Wie bei fast allen LXC-Befehlen geben Sie mit der Option -n den Namen des Containers an. Vergessen Sie den Schalter -d nicht – andernfalls erscheint der Anmeldeprompt, der sich im selben Terminal nicht mehr beenden lässt. Fordern Sie danach via lxc-console -n debian8 eine Konsole mit dem Anmeldeprompt an (Abbildung 2).

Abbildung 2: Nach dem Start des Containers melden Sie sich via Terminal an diesem an.

Mit dem Aufruf lxc-info -n Container ermitteln Sie den Status und die Prozess-ID eines laufenden Containers. Das Kommando lxc-stop -n Container stoppt den laufenden Container wieder. Eine Auswahl der wichtigsten Steuerungs- und Kontrollprogramme finden Sie in der Tabelle "Wichtige LXC-Kommandos".

Wichtige LXC-Kommandos

Aktion Kommando
Anlegen, klonen, löschen
Container anlegen lxc-create -n Container -t Vorlage
Container klonen lxc-clone -o Container -n NeuerContainer
Container löschen lxc-destroy -n Container
Starten und stoppen
Container starten lxc-start -n Container
Container anhalten lxc-freeze -n Container
Container fortsetzen lxc-unfreeze -n Container
Container beenden lxc-stop -n Container
Informationen
Liste aller Container lxc-ls
Liste aktiver Container lxc-ls --active
Liste gestoppter Container lxc-ls --stopped
Infos zu einem Container lxc-info -n Container
IP-Adresse des Containers lxc-info -i -n Container
Prozess-ID des Containers lxc-info -p -n Container
Container überwachen lxc-monitor -n Container
Anwendungen ausführen
Anwendung im Container starten lxc-attach -n Container --Befehl

Netzwerkkonfiguration

Um per Netzwerk auf den Container zuzugreifen, müssen Sie auf Wirt und Gast die Netzwerkeinstellungen anpassen. So gilt es, in beiden Fällen die Datei /etc/network/interfaces zu ändern. Weiterhin benötigen die Netzwerkeinstellungen für den Container unter /var/lib/lxc/Container/config Anpassungen. Um den Container im LAN mit seinem Namen anzusprechen, erweitern Sie die /etc/hosts um einen entsprechenden Eintrag (siehe Kasten "Netzwerkkonfiguration").

Legen Sie im Container via adduser User einen Benutzer an. Prüfen Sie danach mit der Eingabe von systemctl status sshd.service, ob der SSH-Server im Container läuft (Abbildung 3). Nun führen Sie von einem weiteren Terminal aus einen Login-Versuch mit ssh User@Container durch. Nach der Frage mit dem neuen SSH-Schlüssel sollte der Login auf die Shell nun klappen. Mittels exit melden Sie sich wieder ab.

Abbildung 3: Innerhalb des Containers prüfen Sie mit dem Kommando systemctl den Zustand des SSH-Daemons.

Netzwerkkonfiguration

In den folgenden Beispielen aus dem Netz 192.168.0.0/24 verwenden wir für das Wirtssystem die IP-Adresse 192.168.0.37, für den Gast die 192.168.0.90 und den Containernamen debian8. Die entsprechenden Werte aus den Listings müssen Sie für die lokalen Gegebenheiten anpassen.

Listing 2 zeigt die Änderungen der Datei /etc/network/interfaces auf dem Wirt, außerdem ergänzen Sie für eine korrekte Namensauflösung die Datei /etc/hosts um die Zeile 192.168.0.90 debian8. Öffnen Sie danach vom Wirtssystem aus die Datei /var/lib/lxc/debian8/config, und ergänzen Sie diese um die Einträge aus Listing 3. Abschließend modifizieren Sie die Datei /var/lib/lxc/debian8/rootfs/etc/network/interfaces wie in Listing 4 gezeigt.

Die Einstellungen konfigurieren die Netzwerkkarte des Wirts als Bridge (br0 statt eth0). Der Container verfügt über ein virtuelles Ethernet-Interface (veth), das sich mit br0 verbindet.

Nach Abschluss der Änderungen starten Sie zunächst das Netzwerk auf dem Wirt mit dem Kommando /etc/init.d/networking restart neu, im Anschluss auch den Container. Dann testen Sie die Konfiguration mit einem Ping auf die Container-IP-Adresse. Zum Überprüfen der Namensauflösung geben Sie dabei den Hostnamen anstelle der IP-Adresse an.

Listing 2

iface eth0 inet manual
auto br0
iface br0 inet static
  bridge_ports eth0
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0
  address 192.168.0.37
  netmask 255.255.255.0
  network 192.168.0.1
  broadcast 192.168.0.37
  gateway 192.168.0.1
  dns-nameservers 192.168.0.1

Listing 3

# Netzwerk:
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr=00:16:3e:10:20:30
lxc.network.ipv4=192.168.0.90

Listing 4

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 192.168.0.90
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.90
  gateway 192.168.0.1
  dns-nameservers 192.168.0.1

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Frisch verpackt
    LXC-Container eignen sich nicht nur für Entwickler, sondern bieten auch ambitionierten Heimanwendern interessante Möglichkeiten.
  • Virtualisierung mit LXC
    Mithilfe von LXC lagern Sie mit wenigen Handgriffen unsichere Applikationen oder Testsysteme einfach in einen virtuellen Container aus.
  • Richtig gestapelt
    Mit Docker schichten Sie Systeme oder Programme in Form von Image-Dateien in einen Container und arbeiten dann in einer virtuellen Umgebung.
  • Multitool
    Zulucrypt versammelt eine ganze Reihe von Verschlüsselungsmethoden für komplette Volumes unter einer grafischen Oberfläche, lässt sich aber trotzdem leicht bedienen.
  • Lagerhaltung
    Technologien wie Flatpak und Snap suggerieren, bisherige Paketverwaltungskonzepte hätten ausgedient. Ein Blick auf den aktuellen Stand der Softwareverwaltung unter Linux zeigt, dass dieser Eindruck täuscht.
Kommentare
Network und Broadcast sind falsch.
Holger (unangemeldet), Sonntag, 09. Oktober 2016 23:32:46
Ein/Ausklappen

Das ist falsch:

address 192.168.0.37
netmask 255.255.255.0
network 192.168.0.1
broadcast 192.168.0.37
gateway 192.168.0.1
dns-nameservers 192.168.0.1

Richtig

network 192.168.0.0
broadcast 192.168.0.255

Falsch

address 192.168.0.90
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.90
gateway 192.168.0.1
dns-nameservers 192.168.0.1


Richtig

broadcast 192.168.0.255

Quellen

https://0fury.de/blog/?/pos...etting+f%C3%BCr+Anf%C3%A4nger/

http://www.itslot.de/2013/0...netzwerkadresse-berechnen.html



Bewertung: 203 Punkte bei 11 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...