Multi-Boot-Distributionen mit Linux-Containern

Linux-Container (LXC) sind eine leichtgewichtige Virtualisierungstechnologie, die verschiedene Verwendungszwecke hat. Es ist Teil des Linux-Kernels und kann die Emulation einer oder mehrerer Linux-Distributionen auf einem einzelnen Linux-Host ermöglichen. Stellen Sie sich das als Mittelweg zwischen einer Chroot und vollständigen Virtualisierungstechnologien wie VirtualBox, KVM oder Xen vor. Eine ähnliche Technologie in der BSD-Welt sind FreeBSD-Gefängnisse.

Der Computer, auf dem ich schreibe, ist beispielsweise ein Laptop mit Linux Mint 18, der von einem Intel Atom-Prozessor angetrieben wird und nur magere 2 GB RAM hat. Ich verwende jedoch drei Linux-Container, in denen jeweils eine Instanz des Apache-Webservers ausgeführt wird, ohne dass die Leistung beeinträchtigt wird. Dies wäre mit einer herkömmlichen virtuellen Maschine wie VirtualBox undenkbar. Wenn Sie also mehrere Distributionen auf Ihrem Linux-System ausführen möchten, sollten Linux-Container die Aufgabe für Sie erledigen.

Installieren und Konfigurieren von Linux-Containern

Wir richten LXC unter Linux Mint 18 64-Bit ein. Die hier bereitgestellten Installationsanweisungen funktionieren auch unter Ubuntu 16.04 und höher unverändert. Wenn Sie eine andere Distribution verwenden, lesen Sie bitte die offizielle Dokumentation Ihrer Distribution, wenn etwas nicht wie erwartet funktioniert. Eine Vertrautheit mit der Befehlszeile und die allgemeine Fehlerbehebung werden ebenfalls vorausgesetzt.

Voraussetzungen

Hier sind einige Dinge, die Sie einrichten sollten, um mehrere Distributionen zu verwenden:

1. Installieren Sie LXC und andere vorausgesetzte Software mit:

[sourcecode]sudo apt install lxc lxc-templates uidmap[/sourcecode]

2. Jetzt müssen Sie Ihr Profil konfigurieren. Geben Sie die folgenden Befehle ein, um es einzurichten:

[sourcecode]mkdir -p ~ / .config / lxc
echo “lxc.id_map = u 0 100000 65536” & amp; amp; amp; amp; amp; gt; ~ / .config / lxc / default.conf
Echo “lxc.id_map = g 0 100000 65536” & amp; & amp; & amp; & amp; & amp; gt; & amp; & amp; & amp; & amp; & amp; gt; ~ / .config / lxc / default.conf
Echo “lxc.network.type = veth” & amp; & amp; & amp; & amp; & amp; gt; & amp; & amp; & amp; & amp; & amp; gt; ~ / .config / lxc / default.conf
Echo “lxc.network.link = lxcbr0” & amp; & amp; & amp; & amp; & amp; gt; & amp; & amp; & amp; & amp; & amp; gt; ~ / .config / lxc / default.conf
echo “$ USER veth lxcbr0 2” | sudo tee -a / etc / lxc / lxc-usernet[/sourcecode]

3. Anschließend müssen Sie die Benutzerberechtigungen wie folgt einrichten:

[sourcecode]sudo usermod –add-subuids 100000-165536 $ USER
sudo usermod –add-subgids 100000-165536 $ USER

sudo cgm alle Benutzer erstellen
sudo cgm chown alle Benutzer $ (id -u) $ (id -g)
cgm movepid alle Benutzer $$[/sourcecode]

Einrichten Ihres Containers

Nachdem Sie LXC Container zusammen mit anderer vorausgesetzter Software installiert haben, gehen Sie folgendermaßen vor, um den Container einzurichten:

1. In diesem Beispiel richten wir einen Ubuntu-Container mit dem Namen ubu1 ein. Führen Sie dazu den folgenden Befehl aus:

[sourcecode]lxc-create –template download –name ubu1[/sourcecode]

2. Hier weist der Parameter –template lxc an, ein vorkonfiguriertes Bild aus dem Internet herunterzuladen, während der Parameter –name den Namen des Containers angibt - ubu1 < / code> in diesem Fall. Sie können einen beliebigen Namen verwenden.

3. Sie sehen nun eine Liste der unterstützten Distributionsbilder:

Distributionsauswahl

4. Geben Sie die Details der Distribution ein, die Sie installieren möchten. Ich werde die 64-Bit-Version von Ubuntu 16.04 (Codename Xenial) hier installieren:

install-ubuntu

5. Wenn Sie das Image nicht interaktiv installieren möchten, erzielt der folgende Befehl das gleiche Ergebnis wie oben:

[sourcecode]lxc-create -t ​​download -n ubu1 - –dist ubuntu –release xenial –arch amd64[/sourcecode]

6. LXC lädt jetzt ein minimales Ubuntu-Xenial-Image herunter und installiert es auf Ihrem Host-System. Das Herunterladen und Installieren kann abhängig von Ihrer Internetverbindung und der Geschwindigkeit Ihres PCs einige Zeit dauern. Nach der Installation sehen Sie einen Bildschirm wie folgt:

ubuntu_installed

Sie können jetzt Ihren neu eingerichteten Ubuntu-Container verwenden.

Verwenden mehrerer Distributionen mit Linux-Containern

Starten des Containers

Starten Sie Ihren Container mit dem Befehl lxc-start :

[sourcecode]lxc-start -n ubu1 -d[/sourcecode]

Hier gibt der Parameter -n den Namen des Containers an, den Sie starten möchten (in diesem Fall ubu1 ), und den Parameter -d lässt es im Hintergrund laufen.

Sie können überprüfen, ob der Container gestartet wurde, indem Sie den Befehl lxc-ls verwenden:

[sourcecode]lxc-ls -f[/sourcecode]

Laufcontainer

Der Parameter -f ermöglicht eine ausgefallene Berichterstellung. Hier können Sie sehen, dass ich zwei Container habe - einen Debian (gestoppt) und einen Ubuntu (läuft).

Zugriff auf und Verwendung Ihres Containers

Sie können mit dem Befehl lxc-attach auf die Konsole des Containers zugreifen:

[sourcecode]lxc-attach -n ubu1[/sourcecode]

Sie haben jetzt eine Root-Shell auf Ihrem Container. Es wird empfohlen, ein Kennwort für den Root-Benutzer einzurichten und ein reguläres Benutzerkonto zu erstellen:

[sourcecode]passwd
Adduser Beebom[/sourcecode]

Ersetzen Sie beebom natürlich durch den gewünschten Benutzernamen. Sie können dann Software installieren und Ihren Container wie auf einem normalen System konfigurieren. Zum Beispiel in einem Debian- oder Ubuntu-Container:

[sourcecode]apt install wget openssh-server htop tmux nano iptables[/sourcecode]

Stoppen Sie Ihren Container

Nachdem Sie mit dem Container gespielt haben, verwenden Sie entweder den Befehl exit , um zum Hostsystem zurückzukehren. Verwenden Sie nun den Befehl lxc-stop , um Ihren Container zu stoppen:

[sourcecode]lxc-stop -n ubu1[/sourcecode]

Dadurch wird der Container sauber heruntergefahren und es werden keine weiteren Ressourcen auf Ihrem System verbraucht, außer Speicherplatz.

Klonen und Schnappschüsse

Klone

Sobald Sie Programme in einem Container installiert und nach Ihren Wünschen konfiguriert haben, möchten Sie möglicherweise eine oder mehrere Kopien davon erstellen, um die Bereitstellung zu vereinfachen. Sie können dies tun, indem Sie einen Klon erstellen, der eine exakte Nachbildung eines Containers ist.

Um beispielsweise einen Klon des Containers ubu1 zu erstellen (nennen wir ihn ubu2 ), stoppen Sie den Container zuerst mit lxc-stop und verwenden Sie dann den Befehl lxc-copy :

[sourcecode]lxc-stop -n ubu1

lxc-copy -n ubu1 -N ubu2[/sourcecode]

Hier gibt die Option -n den Quellcontainer und die Option -N den Namen des Klons an. Verwenden Sie den Befehl lxc-ls , um zu überprüfen, ob der Container geklont wurde:

Klon

Schnappschüsse

Angenommen, Sie sind dabei, potenziell gefährliche oder schwer wiederherstellbare Änderungen an einem Container vorzunehmen, z. B. die Neukonfiguration eines Webservers. Um den Schaden zu minimieren, können Sie eine Momentaufnahme des Containers erstellen, bevor Sie eine solche Änderung vornehmen. Falls während der Konfiguration etwas schief geht, können Sie den Container einfach stoppen und in seinen vorherigen Arbeitszustand zurückversetzen, indem Sie einen Snapshot wiederherstellen.

Um den Schnappschuss zu erstellen, stoppen Sie zuerst den Container:

[sourcecode]lxc-stop -n ubu1[/sourcecode]

Erstellen Sie dann einen Snapshot mit dem Befehl lxc-snapshot :

[sourcecode]lxc-snapshot -n ubu1[/sourcecode]

Dadurch wird ein Snapshot mit dem Namen snap0 erstellt. Alle nachfolgenden Snapshots, die Sie mit diesem Befehl erstellen, werden als snap1, snap2 usw. bezeichnet.

Danach können Sie den Container starten und die gewünschten Änderungen vornehmen. Wenn Sie zu einem von Ihnen erstellten Snapshot zurückkehren möchten, stoppen Sie den Container und verwenden Sie den Befehl lxc-snapshot mit dem Parameter -r , um einen Snapshot wiederherzustellen:

[sourcecode]lxc-snapshot -r snap0 -n ubu1[/sourcecode]

Dadurch wird der Snapshot snap0 im Container ubu1 wiederhergestellt.

Container beim Booten automatisch starten

Sie können einen Container, z. B. einen Webserver-Container, automatisch starten, wenn Sie Ihr System starten. Wechseln Sie dazu zur Konfigurationsdatei des Containers unter $ HOME / .local / share / lxc / / config und fügen Sie die folgenden Zeilen hinzu:

[sourcecode]lxc.start.auto = 1
lxc.start.delay = 5[/sourcecode]

Die erste Zeile gibt an, dass der Container beim Booten gestartet werden soll. Die Sekunde weist das System an, 5 Sekunden zu warten, bevor der nächste Container gestartet wird, falls vorhanden.

Fehlerbehebung

Wenn Sie Probleme beim Starten von Containern haben, müssen Sie zunächst den Befehl lxc-start im Vordergrundmodus ausführen. Zum Beispiel:

[sourcecode]lxc-start -n ubu1 -F[/sourcecode]

Dies zeigt Ihnen die Fehler auf der aktuellen Konsole, was sehr nützlich ist, um die Art des Problems zu identifizieren.

Probleme beim gleichzeitigen Ausführen mehrerer Container

Wenn Sie versuchen, mehrere Container gleichzeitig auszuführen, werden möglicherweise Fehler wie "Kontingent erreicht" oder "Das konfigurierte Netzwerk konnte nicht erstellt werden" angezeigt werden. Dies liegt daran, dass Sie mehr Netzwerkschnittstellen ausführen, als Ihnen zugewiesen sind. Sie können die Anzahl der Netzwerkbrücken erhöhen, die ein Benutzer ausführen kann, indem Sie die Datei / etc / lxc / lxc-usernet als root ändern. Es könnte ungefähr so ​​aussehen:

[sourcecode]# USERNAME TYPE BRIDGE COUNT
beebom veth lxcbr0 5[/sourcecode]

Sie können die Nummer am Ende (in diesem Beispiel 5) in eine größere Zahl wie 10 ändern. Auf diese Weise können Sie bis zu 10 Container gleichzeitig ausführen.

Andere Verwendungen von Linux-Containern

Linux-Container haben verschiedene Verwendungszwecke. Sie können sie beispielsweise als einfache Testboxen verwenden, um verschiedene Konfigurationen eines Web- oder Datenbankservers zu testen, bevor Sie sie auf einen Produktionsserver übertragen. Ein weiterer Anwendungsfall besteht darin, zu testen, wie eine Anwendung auf verschiedenen Versionen verschiedener Distributionen ausgeführt wird.

Sie können sie auch verwenden, um Anwendungen zu isolieren, denen Sie nicht vertrauen. Schäden, die eine solche Anwendung anrichtet, sind auf ihren eigenen Container beschränkt und wirken sich nicht auf das Hostsystem aus. Bitte beachten Sie, dass es zwar möglich ist, GUI-Anwendungen in einem Container auszuführen, dies jedoch viel Zeit und Mühe kostet und daher nicht empfohlen wird. Wenn Sie GUI-Apps in einer Sandbox ausführen möchten, lesen Sie unseren Artikel zum Sandboxen von Apps unter Linux.

SIEHE AUCH: 7 beste VirtualBox-Alternativen, die Sie verwenden können

Führen Sie mehrere Distros gleichzeitig mit Linux-Containern aus

Damit endet unsere Anleitung zum Ausführen mehrerer Linux-Distributionen auf einem einzigen Computer ohne den Aufwand einer virtuellen Maschine in voller Größe. Der Nutzen dieser Technologie ist nur durch Ihre Kreativität begrenzt. Sie können also experimentieren und neue Anwendungsfälle herausfinden. Wenn Sie Probleme beim Einrichten von Containern haben, können Sie uns im Kommentarbereich eine Frage stellen.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *