Container vs. VM

wit4r7

Member
Sep 22, 2018
31
1
8
31
Hallo,

wie einige ja mitbekommen haben, bin ich neu als PVE Nutzer und habe mir einen Homeserver (16C/32T, 64 GB RAM) gekauft, welcher sowohl einen Teil Produktiv als auch Studienbegleitendes rumprobieren leisten soll.

Ich bin nun an der Einrichtung meines Produktivsystems, welches u.a. File-Server, Cloud-Server, DNS, E-Book Server, Kontakt/Kalender-Server liefern soll.

Jetzt sind mir die Unterschiede grundsätztlich zwischen den beiden Techniken bekannt, aber ich bin noch nicht so richtig schlau, ob ich LXC oder VMs nutzen soll, für die oben Beschrieben Dienste.

Die Daten als solches liegen auf eigenen Platten, falls das von Relevanz ist.

Vielen Dank!
 
VMs haben einen großen Overhead und es kommt auf den Use-Case an:

Auf meinen privaten Maschinen bzw. auf denen, die nicht in einem Cluster sind habe ich alles in LXC, außer Docker - das ist extra in VM wegen besserer Sicherheitsabschottung. Dabei liegt alles auf ZFS - ohne ZFS würde ich wahrscheinlich kein LXC verwenden wollen, da es mir da nicht flexibel genug ist. Ich habe all' die Dinge, die du auch machen willst direkt als LXC laufen, es sei denn die Dienste werden durch Docker bereitgestellt, das läuft wie gesagt in einer VM.

Für einen Cluster sieht das anders aus: Da verwenden wir nur VMs da diese Live migriert werden können und im Cluster auch leider nicht im ZFS liegen können (außer in PVE wird endlich ZFS-over-NFS implementiert).

Auch kannst du LX(C) container so klein machen, dass sie nur wenige MB benötigen. Alleine der zu emulierende Kernel einer "richtigen" VM hat 50-100 MB mit allen Modulen, das ist schon viel Zeugs ... und benötigt neben viel Speicherplatz auch viel mehr RAM.
 
  • Like
Reactions: fireon
Ich kann für alles was keine grafische Oberfläche LXC empfehlen.

Neben den von LnxBil aufgezählten Vorteilen:

- Einfaches vergrößern von der root-disk/ram/cpu ohne neustarten zu muessen
- Schnelles deployen von neuen Servern mit eigenen oder provideten Templates oder von eigenen Backups
- Backup/Restart/Migrate geht alles sehr schnell
 
Ich habe alles in VMs installiert.
der Grund dafür war meine Annahme, das ich jede einzelne VM auf den aktuellen Stand bringen kann (update/upgrade) ohne dabei alle Kernels in alle VMs auf einen Schlag zu erneuern.
Da beim Container ein Kernel für alle verwendet wird, war mir das zu heiß.

liege ich mit der Annahme richtig?
 
liege ich mit der Annahme richtig?

Ja, stimmt. VMs bringen immer eine wesentlich bessere Abschottung als Container mit den "Kosten" des erhöhten Speicherplatzbedarfs (RAM und Disk) und der geringfügig geringeren Performance. Wenn du genug RAM und Festplatte hast ist das auf jeden Fall ein gangbarer Weg.
 
Ich habe einige Raspberry Pi in VMs verbannt. Mein Proxmox läuft auf einen Intel NUC (Intel i5) mit 16Gb RAM und einer 256Gb SSD.
Performance Super. Platzverbrauch pro VM 8Gb und somit zu vernachlässigen.
für mich gibt es keinen Grund auf Container zu wechseln, da ich nie soviel VMs aufbauen werde.
 
Auf einer VM ist die Performance viel Flüssiger als auf einer CT
und die VMs haben eine Virtualisierung KVM.
 
Ich habe ein ähnliches Setup: hauptsächlich freiberuflich bzw. privat, zum testen und lernen, und für self-hosting relevanter Dienste, nur mit 32GB etwas weniger RAM.

Allerdings habe ich entgegen der bisherigen posts alles in LXCs (unprivilegiert) und fahre damit seit 2 Jahren sehr gut. Die Sicherheitsabschottung mittels unprivileged genügt mir. Ich habe mehrere Docker setups in einzelnen LXCs geschachtelt installiert, das ermöglicht es verschiedene Services auf verschiedenen VLANs zu trennen, e.g.:
  • Ein "Docker-Sammel-LXC", wo viele kleinere nicht so relevante Dienste laufen
  • Ein extra Gitlab Docker-LXC
  • etc.
Vorteile:
  • Selbst bei 5 LXC und 20 Docker Containern ist die Prozessorauslastung ~1-2%
  • ich kann jedem LXC (theoretisch) 32GB RAM (max) zuweisen
  • separation of concerns ist besser möglich, weil ich beliebig viele separate Systeme erstellen kann. Das macht vieles einfacher (Backups, Problemsuche, Konfiguration, Sicherheit etc. - für mich der entscheidende Vorteil ggü. VMs, die ich aufgrund des Ressourcenverbrauchs nur sehr sparsam einsetzen kann)
Ein paar Knackpunkte gibt es zu beachten:
  • Bei Raid (1) ist es relativ einfach möglich:
    • Für jeden unprivileged LXC wird ein extra Directory Storage eingerichtet
    • Für diesen kann man per Snapshot direkt ein Backup erzeugen, dass sich 1:1 wiederherstellen lässt
    • Größere Sachen (e.g. Nextcloud Data Folder) am besten per Bind-mount vom hosts einbinden (+uid-mapping)
    • Damit einzelne LXC-Docker Dienste auf einzelne Ordner vom Host/NAS zugriefen können (e.g. Musik-Service, Bilder-Service etc.), per read-only bind mount selektiv den Pfad im LXC verfügbar machen
  • Bei den Docker-Containern dürfen keine privilegierten Parameter verlangt werden. Bei mir war das nur bei dem Gitlab docker-compose.yml aufgetreten, was den hostname ändern wollte: geht freilich nicht. Das ist leicht anpassbar.
  • Bei ZFS ist etwas mehr Arbeit notwendig, da gibt es hier einen workaround, was hier in einem Ansible playbook zusammengefasst wurde.
    Zusammenfassung: Für jedes Docker-volume wird ein eigenes ZFS-Volume erzeugt, was dann den uid's 100000 zugewiesen wird, damit
    es mit unprivilegiert zusammen funktioniert
Teile davon hatte ich mal hier in einem blog post zusammengefasst.

Ich habe keine VMs, würde diese aber in Betracht ziehen:
  • falls ich tests fahre, die das ganze System gefährden könnten
  • für unsichere Software
  • für Produktiv-Systeme in Arbeits/Firmenumgebung
  • für Web-exponierte Dienste
 
Last edited:

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!