Proxmox VM oder LXC Container, Vorteile und Nachteile

spooner

Member
Sep 7, 2022
39
6
13
Hallo Zusammen,
ich beschäftige mich aktuell intensiver mit Proxmox.
Möchte meine Umgebung von Hyper-V auf Proxmox umstellen.

Außerdem werden dann ein paar neue virtuelle Systeme dazu kommen.

Jetzt gibt es ein Proxmox ja mehr Möglichkeiten Dienste laufen zu lassen.
Damit meine ich LXC Container.

Bisher habe ich für jeden Dienst immer eine eigene VM inkl. OS installiert.
Bei den vorgefertigten LXC fällt das OS ja weg.
Und es gibt Vorlagen, z.B. Proxmox VE Helper-Scripts
Geht dann ja schnell und ist komfortabel.

Aber wo sind die Vorteile und wo sind die Nachteile?
Wann ist eine VM besser (außer bei Windows Diensten)?
Wann ist ein Container besser?
Wie sieht es mit Backups aus?

Danke und Gruß
Arthur
 
Aber wo sind die Vorteile und wo sind die Nachteile?
Oh, das ist eine überraschende Frage, die wurde noch nie gestellt ;-)

Ich verwende zu >95% VMs weil die a) sicherer, b) autark sind, c) einen eigenen/unabhängigen Kernel haben und d) somit beliebige Betriebssysteme erlauben.

Für Container spricht meiner Auffassung nach ausschließlich der geringere Resourcenverbrauch, alle anderen Aspekte sprechen dagegen.
 
Ich hab schon viel über die Unterschiede gelesen, aber bin nicht schlau geworden.

Also für z.B. CheckMK, HomeAssistent und Vaultwarden besser eine eigene VM erstellen.

Trotzdem noch kurz die Frage zum Backup.
Wird das Backup wie bei einer normaler VM durchgeführt?
 
Wird das Backup wie bei einer normaler VM durchgeführt?
Ja :-)

Idealerweise hat man dazu einen separaten Proxmox Backup Server, PBS.

Aufpassen muss man bei den Containern mit "mountpoints". Es gibt Stolperfallen, die zu Datenverlust beim Restore führen können --> vor dem Ernstfall das konkrete Verhalten aktiv zu testen ist daher eine gute Idee...
 



Das gibt eine schöne visuelle Darstellung.
 
Ja, im Prinzip ist das mit den LXC keine schlechte Sache.
Bin hin und her gerissen.
Keine viele die darauf schwören.
 
Egal was du tust: Lasse die Finger von Skripten, die du nicht verstehst. Dies gilt insbesondere, wenn das nicht im Homelab, sondern in beruflichen Unfeld laufen soll. Die Helperscripts sind ein Communityprojekt und werden NICHT von den Proxmox Entwicklern entwickelt. Das erklärt auch, warum sie einiges machen, was offiziell nicht empfohlen wird ( wie docker in lxc Container laufen lassen).
Um mal eben schnell einen Dienst laufen lassen, würde ich eine VM mit einen Linux deiner Wahl und docker oder podman empfehlen. Bei beschränkten Ressourcen kann man auch alle Dienste auf einer VM laufen lassen, das ist mit docker/podman kein Problem und man muss nur bei einer VM das Betriebssystem warten und updaten ;)

LXC-Container sind dann gut, wenn man direkt auf Hardwareressourcen des Hosts zugreifen möchte ( etwa iGPU) und man weder docker/podman-Container noch Zugriff auf Netzwerkfreigaben braucht ( geht zwar, ist aber relativ frickelig über bind mounts und uid/gid mapping einzurichten). pi-hole wäre ein Beispiel für so einen Dienst, wofür sich lxc-Container gut eignen ;)

Edit: Typo korrigiert, danke Udo ;)
 
Last edited:
Hypscher Versprecher :)

Code:
to hone  | honed, honed |   
feinschleifen  | -, feingeschliffen |

to hone  | honed, honed |   
verbessern  | verbesserte, verbessert |
 
  • Like
Reactions: Johannes S
LXC-Container sind dann gut, wenn man direkt auf Hardwareressourcen des Hosts zugreifen möchte ( etwa iGPU) und
man weder docker/podman-Container noch Zugriff auf Netzwerkfreigaben braucht

( geht zwar, ist aber relativ frickelig über bind mounts und uid/gid mapping einzurichten).

Super Zusammenfassung. :-)
 
Last edited:
Alles klar, danke für die ausführliche Erläuterung.
Dann noch die letzte Frage:
Wenn der Dienst im Docker Container läuft, dann pro Dienst eine eigene Ubuntu Server VM oder mehrere Docker Container in einer VM?
 
Alles klar, danke für die ausführliche Erläuterung.
Dann noch die letzte Frage:
Wenn der Dienst im Docker Container läuft, dann pro Dienst eine eigene Ubuntu Server VM oder mehrere Docker Container in einer VM?
Guten Morgen, ja das ist eine Frage der Docker-installation und an die Docker community. Denn hier muss man unterscheiden wie dieses Ding funktioniert, wie die Isolation der einzelnen Dienste voneinander ist und was man es selber möchte! Eventuell hat man da Administratoren die sich Sachen teilen oder auch nicht; man weiß es halt nicht was das Ziel ist.
 
Docker Container in einer VM
In einer VM macht es Sinn, wenn für den gewünschten Einsatzzweck die Docker Container voneinander abhängig sind.


Mein Liebling ist Alpine Linux für produktive docker-compose Systeme, Alpine Linux ist besonders schlank.

Wenn Du dann sicher bist ist kannst Du mit dem Hinweis von @Johannes S
https://forum.proxmox.com/threads/schnellster-weg-um-docker-compose-docker-auf-pve-auszuführen.166571/#post-773917 weiter optimieren.
 
Last edited:
Alles klar, danke für die ausführliche Erläuterung.
Dann noch die letzte Frage:
Wenn der Dienst im Docker Container läuft, dann pro Dienst eine eigene Ubuntu Server VM oder mehrere Docker Container in einer VM?
Das kommt drauf an, was einen wichtig ist :) Will man möglichst wenig Wartungsaufwand ( Systemupdates und co) oder muss mit relativ wenig Ressourcen auskommen? Dann bietet sich an möglichst viel auf eine VM zu packen. Oder will man eine strikte Trennung nach Dienst oder Funktion der Container ( "Spielwiese" für Experimente, darf such mal kaputt sein versus "Produktion", die einfach nur funktionieren soll)? Außerdem gibt es Anwendungen, wo über docker-compose o.ä. mehrere Container gestartet werden, die erst zusammen den Dienst ergeben ( z.B. Webserver und Datenbank für einen Webshop), da macht es dann wieder Sinn die alle in reine VM zu packen.

Dazu kommt noch, ob man die VMs eher als "pets" oder "cattle" betrachtet. Diese Analogie kommt aus den devops-Berwichvund wurde u.A. von Thomas Limoncelli, Christina Hogan und Strata R. Chalup in ihrer "Bibel" für Sysadmins popularisert ( https://everythingsysadmin.com/books.html ):

Mein privates Notebook oder der klassische zentrale Firmenserver ist im Grunde ein Haustier ( pet) Es wurde genau für eine bestimmte Verwendung eingerichtet und optimiert, alle Anwendungen samt Daten laufen direkt darauf, alles genauso wieder einzurichten, wäre mit relativ viel Aufwand verbunden. Linuxserver in der Cloud sind dagegen wie Vieh beim Bauern: Jeder hat eine Nummer, wurde aus den gleichen Basisimage erzeugt und über ein Autonatisierungstool ( wie ansible oder puppet) mit der gleichen Software ( in Form von Docker, Kubernetes oder podman Containern) und Konfiguration bestückt. Die Daten werden außerhalb der VM auf externen Storage bereitgestellt. Gibt es mit einer Instanz ein Problem, wirft man sie weg ( quasi eine Notschlachtung ) und erstellt sie neu. Es gibt Firmen, die dabei soweit gehen ihre VMs regelmäßig geplant abzuschießen und neu aufzusetzen, ihr Basisimage wird dabei regelmäßig mit allen aktuellen Patches automatisiert neu erzeugt.
Vorteile davon sind kleben dem Sicherheitsgewinn geringerer Wartungsaufwand ( alles automatisiert) und dass die Daten außerhalb gelagert werden ( macht Backups leichter).

Da die meisten Cloudanbieter als Basis für ihre Plattform Linux und KVM genommen haben ( was ja auch bei ProxmoxVE die Basis ist) finde ich es immer witzig, wenn über die "mangelnde Enterprisefähigkeit" von OpenSource im Allgemeinen und PVE im Besonderen schwadroniert wird. Die wenigsten Firmen betreiben eine auch nur annähernd so komplexe Umgebung wie Amazon oder Google ( und wenn gibt es tatsächlich auf KVM basierende OpenSource Lösungen wie Openstack. Die kommen such mit deutlich größeren Ungebungen als ProxmoxVE klar, sind aber auch komplexer im Betrieb).

Nun ist das Alles in der maximalen Ausbaustufe fürs Homelab sicher erstmal völliger Overkill, aber einiges davon kann und sollte man sich meiner Meinung nach schon abschauen ;)
Cloud-init wäre ein Beispuel, damit kann man in der Clizd schnell eine neue VM starten ubd gleich die passenden Pakete installieren und nötige Systemanpassubgen bornehmen lassen und das wird such von ProxmoxVE unterstützt.
Auch zuhause ist es ja praktisch, im Katastrophenfall alles schnell wieder ans Laufen zu kriegen oder nicht viel Hirmschmalz und Aufwand in Konfiguration stecken zu müssen oder eine verbastelte VM auch mal ohne negative Folgen wegwerfen zu können.
Auch eine Ausgliederung der Daten ( an ein NAS per Netzwerkfreigabe oder als eigene virtuelle Datenplatte) macht es leichter einen Dienst von einer VM an eine andere umzuziehen oder schnell wieder ans Laufen zu kriegen