LXC-Container mit Proxmox VE

Aus LinuxUser 09/2022

LXC-Container mit Proxmox VE

© Maksym Yemelyanov / 123RF.com

Schnell verpackt

Proxmox VE erleichtert das Erstellen und Verwalten von Containern, was diese Technik auch weniger versierten Anwendern zugänglich macht.

Bei Proxmox handelt es sich um eine freie, auf Debian basierende Distribution der Proxmox Server Solutions GmbH aus Wien. Das System bietet die notwendige Logik, um sowohl virtuelle Maschinen als auch Linux-Container über eine Weboberfläche oder die Kommandozeile zu erstellen und zu verwalten (Abbildung 1). Der Artikel “Volle Hütte” aus LU 10/2021 [1] führt durch die Installation von Proxmox VE (Virtual Environment) [2] und begleitet Sie bei der Nutzung als Heim-Server auf den ersten Schritten. Sie finden ihn auch als PDF im Download-Bereich zu diesem Artikel.

Abbildung 1: Die grafische Oberfläche von Proxmox im Webbrowser bietet eine gute Übersicht über den Ressourcenverbrauch und erlaubt über die Seitenleiste vielfältige Einstellungen.

Abbildung 1: Die grafische Oberfläche von Proxmox im Webbrowser bietet eine gute Übersicht über den Ressourcenverbrauch und erlaubt über die Seitenleiste vielfältige Einstellungen.

Debian als Basis

Sie erhalten mit Proxmox VE einen Hypervisor der Enterprise-Klasse zur freien Verwendung, jedoch ohne Support durch den Hersteller. Als einziger technischer Unterschied zur Bezahlversion fehlt das Enterprise-Repository. Es enthält Pakete aus Debian Stable, während das frei verfügbare Repository Pakete aus dem Testing-Zweig enthält. In der Praxis stellte das bislang aber nie ein Problem dar. Die Proxmox GmbH freut sich, wenn Sie trotzdem eine der erschwinglichen Community-Lizenzen erwerben und damit die Entwicklung unterstützen [3].

Was die benötigte Hardware betrifft, so resultiert der Bedarf aus dem geplanten Einsatzzweck. Zum Test dient bei uns ein im täglichen Einsatz befindlicher, selbst zusammengestellter Mini-PC mit einer Ryzen-5-CPU von AMD, 32 GByte RAM und einer 4-TByte-SSD. Genauso gut eignet sich auch ein ausgedienter PC, er sollte aber über mindestens 8 GByte Arbeitsspeicher und ausreichend Festplattenplatz für Ihre Zwecke mitbringen. RAM spielt bei Proxmox eine Hauptrolle, Sie sollten also so viel wie möglich davon in Ihren Proxmox-Server stecken.

Linux-Container

Proxmox bietet mit virtuellen Maschinen (VM) und Containern (CT) zwei Virtualisierungsmethoden an, die sich für verschiedene Einsatzgebiete eignen. Dieser Artikel konzentriert sich auf die Container. Sie begnügen sich mit weniger Ressourcen, denn im Gegensatz zu virtuellen Maschinen arbeiten Linux-Container nativ auf dem Host-Betriebssystem. Sie nutzen also den Kernel und die Infrastruktur des Wirtsrechners. Deshalb entfällt auch die bei VMs nötige Emulation der Hardware. Das Isolieren von VMs funktioniert etwas besser als bei LXC-Containern, wobei es noch einmal zwischen privilegierten und unprivilegierten Containern zu unterscheiden gilt. Bei Letzteren besitzen Prozesse des Gasts weniger Rechte, was ihre Möglichkeiten beim Zugriff auf die Kernel-Module beschneidet.

Proxmox setzt dabei auf Linux-Container (LXC [4]), eine Technik, die der Kernel seit 2008 mitbringt. LXC-Container nutzen Funktionen des Linux-Kernels wie SELinux, Namespaces und Cgroups, um isolierte Prozesse zu erstellen und Ressourcen zu verwalten. Auch Docker, die bekannte Software zur Container-Virtualisierung, setzte anfangs auf die LXC-Schnittstelle im Kernel.

Docker-Container kapseln das zugrunde liegende Betriebssystem ab und verpacken meist einzelne Anwendungen, die im Zusammenspiel dann Dienste anbieten. Dagegen arbeitet LXC-Container viel direkter auf dem Betriebssystem des Computers, was die Arbeit etwa mit SSH erleichtert. Bei Proxmox heißen sie auch häufig System-Container. LXC-Container lassen sich wie VMs über die Proxmox-Weboberfläche erstellen und verwalten. Wer lieber auf der Kommandozeile arbeitet, findet mit dem Proxmox Container Toolkit (PCT [5]) ein noch mächtigeres und gut dokumentiertes Werkzeug für komplexere Aufgaben.

Ubuntu im Container

Wir erstellen in diesem Artikel einen LXC-Container mit der Server-Edition von Ubuntu, Sie können aber stattdessen auch problemlos eine andere Distribution Ihrer Wahl nutzen. Streben Sie die Virtualisierung eines Betriebssystems inklusive Desktop-Umgebung an, fällt das allerdings mit einer VM leichter. Für Ubuntu gibt es auch eine Vorlage mit LXQt als Desktop, wobei hier X2Go zum Darstellen der grafischen Oberfläche zum Einsatz kommt [6]. Einen weiteren Container erstellen wir mit Turnkey für die Anwendung Gallery, eine Webapplikation zum Organisieren und Veröffentlichen digitaler Fotos.

Die LXC-Container basieren auf Templates, also Vorlagen, die Proxmox mitteilen, was Sie erstellen möchten. Der erste Schritt zum Aufbau eines Containers sollte somit ein Update der mitgelieferten Templates darstellen. Dazu wählen Sie in der Weboberfläche oben in der Seitenleiste server an und führen in der Shell den Befehl pveam update aus. Danach gelangen Sie durch Auswahl von local (server) und anschließend von Container Templates und schließlich Templates zur Auswahl der aktualisierten Vorlagen. (Abbildung 2)

Abbildung 2: LXC-Container erstellt Proxmox aus Templates. Von diesen Vorlagen bringt die Software reiche Auswahl mit.

Abbildung 2: LXC-Container erstellt Proxmox aus Templates. Von diesen Vorlagen bringt die Software reiche Auswahl mit.

Die Liste unterteilt sich in system und turnkeylinux. Unter system finden Sie häufig verwendete Distributionen, teilweise in verschiedenen Versionen. Zur Auswahl stehen neben Debian, Ubuntu, Arch Linux und Fedora auch speziellere Distributionen wie Alpine und Gentoo Linux. Bei Turnkey Linux handelt es sich um ein Open-Source-Projekt, das Anwendungen als virtuelle Geräte bereitstellt. Hier finden Sie Container-Vorlagen für Dienste wie Ansible, WordPress, Nextcloud, OpenVPN, Syncthing, Redis, Typo3 und viele andere [7].

Templates

Um den Ubuntu-Container zu erstellen, suchen Sie in den Templates nach “Ubuntu”. Aus den Ergebnissen wählen Sie eine der Versionen 18.04, 20.04, 21.10 und 22.04. In der Regel dürfte die aktuelle Version sich am besten eignen. Markieren Sie diese und klicken Sie unten auf Herunterladen.

Nach dem Download des rund 200 MByte großen Images erscheint die Vorlage in der Übersicht Container Templates. Markieren Sie nun den Eintrag und wählen Sie in der Kopfleiste Erstelle CT. Danach legen Sie die Eigenschaften des zu erstellenden Containers fest. Zunächst vergeben Sie einen kurzen und prägnanten Host-Namen und ein Kennwort für den Container (Abbildung 3).

Abbildung 3: Nach dem Herunterladen eines Templates finden Sie es im Reiter <span class="ui-element">Container-Templates</span>, von wo aus Sie mit der Ausgestaltung des Containers beginnen.

Abbildung 3: Nach dem Herunterladen eines Templates finden Sie es im Reiter Container-Templates, von wo aus Sie mit der Ausgestaltung des Containers beginnen.

Der Haken bei Unprivilegierter Container hindert den LXC-Gast daran, auf das Host-System zuzugreifen. Möchten Sie im Container mit auf Kernel-Modulen angewiesenen Diensten wie NFS, SMB oder FUSE arbeiten, dann entfernen Sie den Haken. Im Zweifel belassen Sie ihn besser; gegebenenfalls gibt es eine Möglichkeit, diese Einstellung auch später noch zu ändern (siehe Kasten “Privilegierung ändern”).

Privilegierung ändern

Bei der Privilegierung eines Containers handelt es sich um die einzige Eigenschaft, die sich nach dem Erstellen nicht mehr so einfach ändern lässt. Sollte das doch einmal notwendig werden, erstellen Sie zunächst ein Backup des Containers. Beim anschließenden Zurückspielen ändern Sie das Flag für die Privilegienstufe auf Privilegiert ab.

Um alle Optionen einzusehen, setzen Sie unten bei Erweitert einen Haken. Nesting aktivieren Sie dann, wenn Sie im Container weitere Container betreiben möchten, etwa mit Docker. Ein öffentlicher SSH-Schlüssel für den Remote-Zugriff lässt sich hier ebenfalls hinterlegen.

Im Reiter Template wählen Sie die zu verwendende Vorlage aus, bei Disks definieren Sie den für den Container zur Verfügung stehenden Platz auf der Festplatte. Hier gibt Proxmox 8 GByte vor, diese Zuordnung lässt sich aber bei Bedarf später noch ändern (Abbildung 4). Verwenden Sie mehr als einen Storage, wählen Sie den gewünschten hier aus. Liegen die Daten auf einer SSD, stellen Sie bei den Mount-Optionen lazytime als besten Wert ein [8].

Abbildung 4: Stellen Sie im Betrieb fest, dass die Instanz weniger oder mehr Ressourcen ben&ouml;tigt, so &auml;ndern Sie das in den verschiedenen Reitern der mittleren Leiste.

Abbildung 4: Stellen Sie im Betrieb fest, dass die Instanz weniger oder mehr Ressourcen benötigt, so ändern Sie das in den verschiedenen Reitern der mittleren Leiste.

Im Reiter für die CPU-Einstellungen geben Sie an, wie viele Kerne Sie dem Container zur Verfügung stellen möchten. Je nach Einsatzzweck weisen Sie zwei bis vier davon zu. Lässt sich der Ressourcenbedarf noch nicht abschätzen, starten Sie mit zwei Cores und ändern die Anzahl bei Bedarf später. Ähnliches gilt für den Arbeitsspeicher und die Swap-Datei: Übernehmen Sie die Vorgaben und korrigieren die Werte später bei Bedarf.

Im Netzwerk-Reiter klicken Sie auf DHCP oder geben eine statische IP-Adresse ein. Als Gateway dient die Adresse des Routers [9]. Die sicherste Variante, um beim Start des Containers eine Adresse zu erhalten, besteht darin, eine statische IP aus Ihrem Adressraum zu vergeben. Bei DNS im nächsten Reiter belassen Sie die Voreinstellungen, es sei denn, Sie bevorzugen einen anderen Nameserver.

Der letzte Reiter fasst die Einstellungen zusammen. Unten links legen Sie fest, ob der Container nach dem Erstellen direkt startet (Abbildung 5). Das Finalisieren geschieht nach einem Klick auf Abschließen und dauert nur wenige Sekunden.

In der Konsole loggen Sie sich nun in den neuen Container ein oder verbinden sich per SSH mit ihm. In der Leiste links kontrollieren Sie den Ressourcenverbrauch, in den Reitern darunter nehmen Sie Anpassungen vor. Bevor Sie jedoch per SSH zugreifen, sollten Sie neben dem Standard-Root von Proxmox mit dem Befehl adduser User einen neuen User anlegen, den Sie mittels usermod -aG sudo User direkt bei Sudo anmelden. Dieses Benutzerkonto nutzen Sie dann für SSH.

Abbildung 5: Nach dem Erstellen startet der Container mit Ubuntu Server automatisch und steht zum Einsatz bereit.

Abbildung 5: Nach dem Erstellen startet der Container mit Ubuntu Server automatisch und steht zum Einsatz bereit.

Als Nächstes implementieren Sie den Fotodienst Gallery in einen Container und rufen ihn über dessen Web-Interface auf. Dazu suchen Sie bei den Templates nach “Gallery”, laden die rund 380 MByte große Appliance herunter und installieren sie ebenso wie zuvor den Ubuntu-Server (Abbildung 6). Sofern es sich um Ihren ersten Turnkey-Container handelt, müssen Sie nach dem Start zunächst Turnkey den Anweisungen folgend konfigurieren und erhalten am Ende die URL, um Gallery im Browser aufzurufen (Abbildung 7). Bei der nächsten Turnkey-Installation konfigurieren Sie dann nur noch die Applikation selbst (Abbildung 8).

Abbildung 6: Das Verfahren zum Erstellen von Turnkey-Templates unterscheidet sich kaum von dem f&uuml;r Distributions-Container. Beim ersten Verwenden von Turnkey durchlaufen Sie eine grundlegende Konfiguration.

Abbildung 6: Das Verfahren zum Erstellen von Turnkey-Templates unterscheidet sich kaum von dem für Distributions-Container. Beim ersten Verwenden von Turnkey durchlaufen Sie eine grundlegende Konfiguration.

Abbildung 7: Bei Turnkey-Templates handelt es sich in der Regel um Webdienste, die Sie entsprechend im Browser starten.

Abbildung 7: Bei Turnkey-Templates handelt es sich in der Regel um Webdienste, die Sie entsprechend im Browser starten.

Abbildung 8: Auch bei den Turnkey-Templates lassen sich die Ressourcen nachtr&auml;glich an den tats&auml;chlichen Bedarf anpassen.

Abbildung 8: Auch bei den Turnkey-Templates lassen sich die Ressourcen nachträglich an den tatsächlichen Bedarf anpassen.

Templates erstellen

Auch das Erstellen eigener Templates fällt nicht übermäßig schwer. Richten Sie dazu einen bestehenden Container nach Ihren Vorstellungen ein. Nach einem Rechtsklick auf den angehaltenen Container in der Seitenleiste erscheint der Menüpunkt Konvertiere zu Template. Dabei ändert sich zunächst lediglich das Icon des Containers. Um ihn zu starten, führen Sie erneut einen Rechtsklick darauf aus und wählen Klon. Daraufhin erhält das Template eine neue ID, womit der Container startklar ist [10].

Zum Schluss noch ein Tipp für alle Proxmox-Einsteiger. Nach der Installation macht Proxmox Sie beim ersten Start der Weboberfläche darauf aufmerksam, dass Sie keine Subskription besitzen. Auch wenn Sie diese Meldung wegklicken, erscheint sie nach jedem Einloggen im Browser erneut. Um sie zu entfernen, öffnen Sie in der Leiste am linken Rand unter Rechenzentrum | Server die Shell und führen Sie die Kommandos aus Listing 1 aus. Damit sollte die Meldung bis zum nächsten größeren Update von Proxmox unterbleiben.

Listing 1

Subskriptionsaufforderung entfernen

$ sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
$ systemctl restart pveproxy.service
#### Überprüfen
$ grep -n -B 1 'No valid sub' proxmoxlib.js

TIPP

Neben der ausführlichen Dokumentation zu Proxmox und dem gesamten Umfeld [12] gibt es viele Youtube-Videos für Anfänger und Fortgeschrittene [13].

Fazit und Ausblick

Verwenden Sie regelmäßig mehr als eine virtuelle Maschine oder möchten Webdienste in Containern auf der Basis von Open Source ausrollen, finden Sie in Proxmox die passende Software dazu. Die Lösung steht proprietären Anwendungen wie VMware ESXi grundsätzlich um nichts nach. Andererseits bietet Proxmox wesentlich mehr als das weitverbreitete Virtualbox. Zusammen mit dem Proxmox Backup Server (PBS [11]) ergibt sich ein schlüssiges Gesamtpaket, das ihre VMs und Container zusätzlich absichert. Darüber lesen Sie in einem Artikel in einer der nächsten Ausgaben mehr. (tle)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 09/2022 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben