Linux-Container (LXC) sind eine leichtgewichtige Virtualisierungstechnologie und haben verschiedene Verwendungszwecke. Es ist Teil des Linux-Kernels und ermöglicht es Ihnen, eine oder mehrere Linux-Distributionen auf einem einzigen Linux-Host zu emulieren. Betrachten Sie es als einen Mittelweg zwischen einem Chroot und vollständigen Virtualisierungstechnologien wie VirtualBox, KVM oder Xen. Eine ähnliche Technologie, die in der BSD-Welt vorhanden ist, sind FreeBSD Jails.
Als Beispiel ist die Maschine, auf der ich schreibe, ein Laptop mit Linux Mint 18, angetrieben von einem Intel Atom-Prozessor und mageren 2 GB RAM. Dennoch betreibe ich drei Linux-Container, in denen jeweils eine Instanz des Apache-Webservers ausgeführt wird, ohne große Leistungseinbußen. Dies wäre mit einer herkömmlichen virtuellen Maschine wie VirtualBox undenkbar. Wenn Sie also mehrere Distributionen auf Ihrem Linux-System ausführen wollten, sollten Linux-Container die Arbeit für Sie gut erledigen.
Installieren und Konfigurieren von Linux-Containern
Wir richten LXC auf Linux Mint 18 64-Bit ein. Die hier bereitgestellten Installationsanweisungen funktionieren auch unverändert auf Ubuntu 16.04 und höher. Wenn Sie eine andere Distribution verwenden, lesen Sie bitte die offizielle Dokumentation Ihrer Distribution, wenn etwas nicht wie erwartet funktioniert. Eine Vertrautheit mit der Kommandozeile und allgemeiner Fehlersuche wird ebenfalls vorausgesetzt.
Voraussetzungen
Hier sind ein paar Dinge, die Sie einrichten sollten, um mit der Verwendung mehrerer Distributionen zu beginnen:
1. Installieren Sie LXC und andere vorausgesetzte Software mit:
[sourcecode]sudo apt install lxc lxc-templates uidmap[/sourcecode]
2. Jetzt müssen Sie konfigurieren Sie Ihr Profil. Geben Sie die folgenden Befehle ein, um es einzurichten:
[sourcecode]mkdir -p ~/.config/lxc
echo „lxc.id_map = u 0 100000 65536“ > ~/.config/lxc/default.conf
echo „lxc.id_map = g 0 100000 65536“ >> ~/.config/lxc/default.conf
echo „lxc.network.type = veth“ >> ~/.config/lxc/default.conf
echo „lxc.network.link = lxcbr0“ >> ~/.config/lxc/default.conf
echo „$USER veth lxcbr0 2“ | sudo tee -a /etc/lxc/lxc-usernet[/sourcecode]
3. Dann müssen Sie die Benutzerberechtigungen einrichten folgendermaßen:
[sourcecode]sudo usermod –add-subuids 100000-165536 $USER
sudo usermod –add-subgids 100000-165536 $USER
sudo cgm erstellt alle Benutzer
sudo cgm chown alle Benutzer $(id -u) $(id -g)
cgm movepid alle Benutzer $$[/sourcecode]
Einrichten Ihres Containers
Nachdem Sie den LXC-Container zusammen mit anderer erforderlicher Software installiert haben, sind hier die Schritte zum Einrichten des Containers:
1. In diesem Beispiel Wir werden einen Ubuntu-Container einrichten, benannt ubu1
. Führen Sie dazu den folgenden Befehl aus:
[sourcecode]lxc-create – Vorlagendownload – Name ubu1[/sourcecode]
2. Hier weist der Parameter –template
lxc an herunterladen ein vorkonfiguriertes Bild aus dem Internet, während der Parameter –name
den Namen des Containers angibt – in diesem Fall ubu1
. Sie können einen beliebigen Namen verwenden.
3. Sie sehen nun eine Liste von unterstützte Distributions-Images:
4. Geben Sie die Einzelheiten der Verteilung ein die 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 interaktiverzielt der folgende Befehl das gleiche Ergebnis wie der obige:
[sourcecode]lxc-create -t download -n ubu1 — –dist ubuntu –release xenial –arch amd64[/sourcecode]
6. LXC lädt nun ein minimales Ubuntu-Xenial-Image herunter und installiert es auf Ihrem Hostsystem. Der Download und die Installation können abhängig von Ihrer Internetverbindung und der Geschwindigkeit Ihres PCs einige Zeit in Anspruch nehmen. Nach der Installationsehen Sie einen Bildschirm wie diesen:
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 der Parameter -n
gibt den Namen des Containers an die 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]
Der Parameter -f
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
Du kannst Greifen Sie auf die Konsole des Containers zu mit dem Befehl lxc-attach
:
[sourcecode]lxc-attach -n ubu1[/sourcecode]
Sie haben jetzt eine Wurzelschale auf Ihrem Behälter. Es wird empfohlen, dass Sie ein Passwort für den Root-Benutzer einrichten, und Erstellen Sie ein normales Benutzerkonto:
[sourcecode]Passwort
adduser beebom[/sourcecode]
Natürlich ersetzen Biene mit dem gewünschten Benutzernamen. Sie können dann Software installieren und Ihren Container konfigurieren, wie Sie es auf einem normalen System tun würden. Zum Beispiel in einem Debian- oder Ubuntu-Container:
[sourcecode]apt install wget openssh-server htop tmux nano iptables[/sourcecode]
Anhalten Ihres Containers
Nachdem Sie mit dem Container fertig sind, verwenden Sie entweder den Befehl exit
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 dem Speicherplatz.
Klonen und Snapshots
Klone
Sobald Sie Programme in einem Container installiert und nach Ihren Wünschen konfiguriert haben, möchten Sie dies vielleicht tun Erstellen Sie eine oder mehrere Kopien davon für eine einfache Bereitstellung. Sie können dies tun, indem Sie eine erstellen Klondie eine exakte Nachbildung eines Containers ist.
Um beispielsweise einen Klon des Containers ubu1
zu erstellen (nennen wir ihn ubu2
), Stoppen Sie zuerst den Container Verwenden Sie lxc-stop
und dann den Befehl lxc-copy
:
[sourcecode]lxc-stop -n ubu1
lxc-copy -n ubu1 -N ubu2[/sourcecode]
Hier das Die Option -n gibt den Quellcontainer anund das Die Option -N gibt den Namen des Klons an. Zu verifizieren dass der Container geklont wurde, verwenden Sie den Befehl lxc-ls
:
Schnappschüsse
Angenommen, Sie sind im Begriff, 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 durch Wiederherstellen eines Snapshots in seinen vorherigen Arbeitszustand zurückversetzen.
Erstellen Sie zuerst den Snapshot Stoppen Sie den Behälter:
[sourcecode]lxc-stop -n ubu1[/sourcecode]
Dann, einen Schnappschuss erstellen mit dem Befehl lxc-snapshot
:
[sourcecode]lxc-snapshot -n ubu1[/sourcecode]
Dadurch wird ein Snapshot namens snap0
erstellt. Alle nachfolgenden Snapshots, die Sie mit diesem Befehl erstellen, werden aufgerufen Schnapp1, schnapp2usw.
Danach können Sie Start den Container und nehmen Sie die gewünschten Änderungen vor. Wenn Sie zu einem beliebigen Zeitpunkt zu einem von Ihnen erstellten Snapshot zurückkehren möchten, stoppen den Container , und verwenden Sie den Befehl lxc-snapshot
mit dem Parameter -r
, um einen Schnappschuss wiederherstellen:
[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, beispielsweise einen Webserver-Container, automatisch starten lassen, wenn Sie Ihr System hochfahren. Gehen Sie dazu auf die Konfigurationsdatei des Containersbefindet sich in $HOME/.local/share/lxc/
und füge 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 zweite weist das System an 5 Sekunden warten vor dem Starten des nächsten Containers, falls vorhanden.
Fehlerbehebung
Wenn Sie Probleme beim Starten von Containern haben, versuchen Sie zunächst, den Befehl lxc-start
auszuführen Vordergrund Modus. Zum Beispiel:
[sourcecode]lxc-start -n ubu1 -F[/sourcecode]
Dieser Wille zeigt Ihnen 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 „Fehler beim Erstellen des konfigurierten Netzwerks“. Dies liegt daran, dass Sie mehr Netzwerkschnittstellen ausführen, als Ihnen zugewiesen wurden. Du kannst Erhöhen Sie die Anzahl der Netzwerkbrücken, die ein Benutzer ausführen kann indem Sie die Datei /etc/lxc/lxc-usernet
ändern als Wurzel. Es könnte etwa so aussehen:
[sourcecode]# BENUTZERNAME TYP BRIDGE COUNT
beebom veth lxcbr0 5[/sourcecode]
Du kannst Ändern Sie die Nummer am Ende (5 in diesem Beispiel) auf eine größere Zahl wie 10. Dadurch 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 leichte Testboxen verwenden, um verschiedene Konfigurationen eines Web- oder Datenbankservers zu testen, bevor Sie sie auf einem Produktionsserver festschreiben. 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 – jeder Schaden, den eine solche Anwendung anrichtet, beschränkt sich auf ihren eigenen Container und wirkt sich nicht auf das Hostsystem aus. Bitte beachten Sie, dass es zwar möglich ist, GUI-Anwendungen in einem Container auszuführen, dies jedoch einen erheblichen Zeit- und Arbeitsaufwand erfordert und daher nicht empfohlen wird. Wenn Sie GUI-Apps in einer Sandbox ausführen möchten, lesen Sie unseren Artikel zum Sandboxen von Apps in Linux.
SIEHE AUCH: 7 beste VirtualBox-Alternativen, die Sie verwenden können
Führen Sie mehrere Distributionen gleichzeitig mit Linux-Containern aus
Damit endet unser How-To zum Ausführen mehrerer Linux-Distributionen auf einem einzelnen Computer, ohne den Overhead einer virtuellen Maschine in voller Größe. Der Nutzen dieser Technologie wird nur durch Ihre Kreativität begrenzt, also experimentieren Sie ruhig und entdecken Sie neue Anwendungsfälle. Wenn Sie Probleme beim Einrichten von Containern haben, können Sie uns gerne eine Frage im Kommentarbereich stellen.