Einführung in die LXD-Container von Ubuntu

Container sind aus vielen Gründen nützlich. Sie isolieren Apps vom Rest des Systems. Sie sind portabel und einfach zu klonen und/oder auf andere Betriebssysteme zu verschieben. Und im Falle von Linux funktionieren sie unter jeder Distribution auf dieselbe Weise, ohne dass Anpassungen erforderlich sind. Wenn Sie einen Container von RedHat nach Ubuntu verschieben müssen, sollte dies nur ein einfacher Kopiervorgang sein.
Docker ist eine beliebte Lösung, die dafür entwickelt wurde, eine einzelne Anwendung zu enthalten: zum Beispiel einen MySQL-Datenbankserver. LXD ist in einigen Aspekten ähnlich, ist jedoch dafür ausgelegt, ein gesamtes Betriebssystem zu enthalten. Dies macht es für einige Szenarien nützlich. Zum Beispiel können Sie einen LXD-Container erstellen, einen Datenbankserver und einen HTTP-Server installieren. Dann können Sie eine WordPress-Website darin erstellen. Sie können jetzt von Cloud zu Cloud wechseln, indem Sie einfach diesen LXD-Container dorthin verschieben, wo er benötigt wird, wenn Sie mit Ihrem vorherigen Anbieter unzufrieden sind. Und da es einfach ist, einen Container zu klonen, können Sie Ihre Website sogar bei mehreren Cloud-Anbietern hochladen, um ein redundantes, hochverfügbares Setup zu erstellen.
LXD virtualisiert keine Hardware wie QEMU oder VirtualBox, was bedeutet, dass es sehr schnell ist und eine nahezu native Ausführungsgeschwindigkeit bietet.
LXD installieren und konfigurieren
Öffnen Sie ein Terminal und installieren Sie LXD sowie die ZFS-Dienstprogramme, die Ihnen helfen, einige Operationen zu beschleunigen und Speicherplatz beim Arbeiten mit Containern zu sparen.
sudo apt install zfsutils-linux lxd
Starten Sie die LXD-Konfiguration.
sudo lxd initDrücken Sie ENTER, um die Standardwerte auszuwählen.
Für Größe in GB des neuen Loop-Geräts (mindestens 1 GB) [Standard=15 GB] können Sie einen anderen Wert wählen, z.B. “50 GB”, wenn Sie wissen, dass Sie viele Container erstellen werden.

Finden und Starten eines LXD-Distributionsbilds
Um alle Ubuntu-Bilder aufzulisten:
lxc image list ubuntu: arch=amd64
Es wird viele Ergebnisse geben. Sie können arch=amd64 weglassen, wenn Sie Bilder für andere Plattformen benötigen, z.B. ARM-Prozessoren (Raspberry Pi-Geräte verwenden eine solche Architektur).
Im vorherigen Bild wurden die Ergebnisse (mit |head) limitiert, um die Lesbarkeit zu erleichtern. Der Fingerabdruck von Ubuntu 18.04 (84a71299044b) wurde hervorgehoben. Wenn Sie einen Container mit dieser Distribution starten möchten, wäre der Befehl:
lxc launch ubuntu:84a71299044bIm Moment würde dies einen Fehler mit unzureichenden Berechtigungen zurückgeben. Sie müssen in der “lxd”-Gruppe sein. Ihr Benutzer wurde bereits zu dieser Gruppe hinzugefügt, aber um sie aktiv zu machen, müssen Sie sich abmelden und wieder anmelden. Wenn Sie das vermeiden möchten, verwenden Sie diesen Befehl und ersetzen “user” durch Ihren Benutzernamen:
execsu - user
Jetzt funktionieren lxc-Befehle, ohne dass sudo erforderlich ist.
LXD-Container mit nicht-Ubuntu-Distributionen starten
Dieser Befehl zeigt Ihnen, welche anderen Distributionen verfügbar sind:
lxc image list images: arch=amd64Um ein Bild zu starten, können Sie anstelle des Fingerabdrucks auch einen Aliasnamen verwenden, wenn Sie einen in dieser Liste verfügbar sehen.
lxc launch images:debian/9
Wenn Sie am Ende eine Zeichenfolge anhängen, können Sie einen Namen für Ihren Container wählen:
lxc launch images:debian/9 wordpress-siteLXD-Container verwalten
Um alle Container aufzulisten:
lxc list
Die Spalte “IPV4” ist besonders wichtig, wenn Sie einen Dienst auf dieser Instanz ausführen. Wenn zum Beispiel ein Apache-HTTP-Server auf der Instanz läuft, würde die Eingabe von „10.234.232.246“ im Browser die in dem Container gehostete Website anzeigen.
Um einen Container zu stoppen:
lxc stop name_of_containerDies kann bei nicht-Ubuntu-Distributionen sehr lange dauern (oder fehlschlagen). Es ist besser, eine Shell zum Container zu erhalten, und einmal drinnen systemctl poweroff einzugeben, um ihn zu stoppen.
Wenn alles andere fehlschlägt, können Sie mit folgendem Befehl zwangsweise stoppen:
lxc stop name_of_container --forceUm ihn zu starten:
lxc start name_of_containerUm in Ihren Container zu gelangen:
lxc shell name_of_container
Sie können Programme mit „sudo apt install“ installieren und alles andere tun, was Sie auf einer normalen Linux-Distribution tun würden, z.B. einen Apache-Server konfigurieren. Wenn Sie den Container verlassen möchten, geben Sie einfach ein:
exitDateien zu/von LXD-Containern übertragen
Um eine Datei in Ihren Container hochzuladen:
lxc file push /path/to/local/file name_of_container/path/to/uploaded/fileFügen Sie den Namen der zu erstellenden Datei hinzu, nicht nur das Verzeichnis, in das Sie sie hochladen möchten. Hier ein Beispiel:
lxc file push lxd-apt-install.png accurate-colt/var/www/website/upload.pngUm ein Verzeichnis anstelle einer Datei hochzuladen:
lxc file push /path/to/local/directory name_of_container/path/to/remote/directory --recursive--verboseBeispiel:
lxc file push /bin accurate-colt/tmp --recursive--verboseUm ein Verzeichnis von Ihrem Container auf Ihr Hauptbetriebssystem herunterzuladen:
lxc file pull name_of_container/path/to/remote/directory /path/to/local/directory --recursive--verboseBeispiel:
lxc file pull accurate-colt/tmp /tmp --recursive--verboseFazit
Dies deckt die grundlegende Nutzung von LXD-Containern ab. Es gibt fortgeschrittenere Funktionen wie Snapshots und Rollbacks, das Festlegen von Limits für Ressourcen wie CPU und RAM, das Klonen von Containern usw. Diese könnten in einem zukünftigen Tutorial behandelt werden, wenn wir bemerken, dass die Leser an dem Thema interessiert sind.