So führen Sie mehrere Distros gleichzeitig mit Linux-Containern aus

  • Vovich Antonovich
  • 0
  • 2143
  • 220

Linux-Container (LXC) sind eine leichtgewichtige Virtualisierungstechnologie und haben verschiedene Verwendungsmöglichkeiten. 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.

Die Maschine, auf der 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:

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

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

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

3. Dann müssen Sie Richten Sie die Benutzerberechtigungen ein wie folgt:

[Quellcode] 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 all user $$ [/ sourcecode]

Container einrichten

Nachdem Sie LXC Container zusammen mit anderer vorausgesetzter Software installiert haben, gehen Sie wie folgt vor, um den Container einzurichten:

1. In diesem Beispiel, Wir werden einen Ubuntu-Container einrichten, genannt ubu1. Führen Sie dazu den folgenden Befehl aus:

[Quellcode] lxc-create -template Download-Name ubu1 [/ Quellcode]

2. Hier die -Vorlage Parameter weist lxc an herunterladen ein vorkonfiguriertes Bild aus dem Internet, während -Name Parameter gibt den Namen des Containers an - ubu1 in diesem Fall. Sie können einen beliebigen Namen verwenden.

3. Sie sehen nun eine Liste von unterstützte Distribution-Bilder::

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

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

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

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, Sie sehen einen Bildschirm wie diesen:

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

Verwenden mehrerer Distributionen mit Linux-Containern

Container starten

Starten Sie Ihren Container mit dem lxc-start Befehl:

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

Hier die -n Parameter Gibt den Namen des Containers an dass du anfangen willst (ubu1 in diesem Fall) und die -d Parameter lässt es im Hintergrund laufen.

Sie können überprüfen, ob der Container mit dem gestartet wurde lxc-ls Befehl:

[Quellcode] lxc-ls -f [/ Quellcode]

Das -f Parameter aktiviert schick Berichterstattung. Hier können Sie sehen, dass ich habe zwei Behälter - ein Debian (gestoppt) und ein Ubuntu (läuft).

Zugriff auf und Verwendung Ihres Containers

Sie können Greifen Sie auf die Containerkonsole zu Verwendung der lxc-attach Befehl:

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

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

[Quellcode] passwd
Adduser Beebom [/ Quellcode]

Natürlich ersetzen Beebom mit dem 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:

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

Stoppen Sie Ihren Container

Wenn Sie mit dem Container fertig sind, verwenden Sie entweder die Ausfahrt Befehl um zum Host-System zurückzukehren. Verwenden Sie jetzt die lxc-stop Befehl um Ihren Container zu stoppen::

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

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 Erstellen Sie eine oder mehrere Kopien davon zur einfachen Bereitstellung. Sie können dies tun, indem Sie eine erstellen Klon, Das ist eine exakte Nachbildung eines Containers.

Zum Beispiel, um einen Klon des zu erstellen ubu1 Container (nennen wir es ubu2), Stoppen Sie zuerst den Behälter mit lxc-stop, dann benutze die lxc-Kopie Befehl:

[Quellcode] lxc-stop -n ubu1

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

Hier die -Die Option n gibt den Quellcontainer an, und das -Die Option N gibt den Namen des Klons an. Zu überprüfen dass der Container geklont wurde, verwenden Sie die lxc-ls Befehl:

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, zuerst Stoppen Sie den Behälter::

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

Dann, Erstellen Sie einen Schnappschuss Verwendung der lxc-Schnappschuss Befehl:

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

Dadurch wird ein Snapshot namens aufgerufen snap0. Alle nachfolgenden Snapshots, die Sie mit diesem Befehl erstellen, werden aufgerufen snap1, snap2, etc.

Danach können Sie Anfang den Container und nehmen Sie die gewünschten Änderungen vor. Wenn Sie zu einem von Ihnen erstellten Schnappschuss jederzeit zurückkehren möchten, halt den Behälter, und verwenden Sie die lxc-Schnappschuss Befehl mit dem -r Parameter zu Stellen Sie einen Schnappschuss wieder her::

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

Dadurch wird der Schnappschuss wiederhergestellt snap0 zum ubu1 Container.

Container beim Booten automatisch starten

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

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

Die erste Zeile gibt an, dass der Container beim Booten gestartet werden soll. Der zweite weist das System an Warten Sie 5 Sekunden vor dem Starten des nächsten Containers, falls vorhanden.

Fehlerbehebung

Wenn Sie Probleme beim Starten von Containern haben, versuchen Sie zunächst, das auszuführen lxc-start Befehl in Vordergrund Modus. Beispielsweise:

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

Dieser Wille Zeigen Sie die Fehler auf der aktuellen Konsolee, 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, Möglicherweise werden Fehler angezeigt B. "Kontingent erreicht" oder "Konfiguriertes Netzwerk konnte nicht erstellt werden". Dies liegt daran, dass Sie mehr Netzwerkschnittstellen ausführen, als Ihnen zugewiesen sind. Sie können Erhöhen Sie die Anzahl der Netzwerkbrücken, die ein Benutzer ausführen kann durch Ändern der / etc / lxc / lxc-usernet Datei als Wurzel. Es könnte ungefähr so ​​aussehen:

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

Sie können Ändern Sie die Nummer am Ende (5 in diesem Beispiel) auf eine größere Zahl wie 10. 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.




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

Gadget-Kaufanleitungen, Technologien, die wichtig sind
Wir veröffentlichen detaillierte Anleitungen für den Kauf von Geräten, erstellen interessante Listen der besten Produkte auf dem Markt und berichten über Neuigkeiten aus der Welt der Technologie