LXC vs. Docker

Und erste Wahl ist software-emulation mit QEMU?
Das ist tatsächlich am sichersten,
Da fehlt ein Smiley, oder? ;-)

Ich favorisere eindeutig KVM, also eine VM mit der normalen PVE-Geschmacksrichtung.
 
Sorry, ich muss das Thema nochmal ansprechen. Ich habe zwischenzeitlich ein bisschen weiter probiert:

Ich habe in meinem Mini-Test-PC einen 8-Core Prozessor. Diese 8 Kerne sind aber schnell vergeben: Ich habe LXC Container mit einem MS SQL Server, Adguard, Paperless, Bitwarden, Bookstack usw. Selbst, wenn ich jedem Container nur einen Core zuweise, ist bei spätestens 8 Containern Schluss, oder man überbucht, dann kommen vielleicht noch 2-4 Container dazu.
CPUs überbuchen in der Form "jeder meiner 8 Container hat 4 vcores" ist kein Problem.
"Nicht übertreiben" meint, dass Du jetzt keine 8 VMs mit je 2x32 vcores einrichten solltest (das wird halt langsam, aber vermutlich läuft das sogar).

Wenn Du jetzt schreibst, man soll es bei der Buchung der CPU nicht übertreiben, dann frage ich mich, wie es andere machen. In manchen Tutorials sieht man Proxmox Server mit etlichen LXC Containern. Da müsste ja erheblich überbucht worden sein? Oder habe ich das falsch verstanden?
Ja klar, man hat ja selten überall gleichzeitig Last (zu Hause, produktiv natürlich leider schon).
Du kannst aber auch "halbe" und "zehntel" CPUs (und disk I/O etc) zuweisen (z.b. https://forum.proxmox.com/threads/frage-zur-nutzung-von-cpu-units-inkl-resourcenzuteilung.37877/).
 
  • Like
Reactions: Johannes S
OK, also hier mal meine Testumgebung auf einem Mini-PC. Es ist erstmal nur zum Testen, ob es auch alles so klappt, wie ich mir das denke. Produktiv läuft hier noch gar nichts. Am Ende soll bei erfolgreichem Test ein neuer Server in einen 19 Zoll Schrank:

Hardware: Intel I5-12450H (8C/12T), 32 GB Ram, 1 TB M2.NVME
eine datacenter oder eine prosumer SSD? ECC RAM?
Für den Server würde ich datacenter SSD, ECC RAM und dann halt 128 GB nehmen. Falls das Budget reicht natürlich. Sonst halt so, aber 64 GB wären schon schön.

Hier die aktuellen Installationen mit Ressourcenzuordnung:

Typ / Zweck / Core / Ram / HDD
LXC / adguard / 1 / 512 MB / 2 GB
LXC / MS SQL Server / 4 / 8 GB / 64 GB
Das Microsoft-Ding?
Ja, tut nix, aber verbraucht fast alles, das kenn ich. Also hier würde ich umstellen (ich mag MS SQL aber auch nicht, das ist mir alles nicht gut genug), vielleicht maria oder besser PostgreSQL (was leider immer noch kein clustering kann, soweit ich weiß).
PostgreSQL geht dann vermutlich mit 1 GB RAM schon. Falls das geht, würde ich hier zuerst gucken, da sollte am einfachsten was zu holen sein.

LXC / Dashboard / 2 / 1 GB / 3 GB
LXC / NGINX / 2 / 1 GB / 4 GB
die docker und adguard würde ich in 1LXC tun.
LXC / PaperlessNGX / 2 / 8 GB / 30 GB
LXC / homebox / 1 / 1 GB / 10 GB
die in den ersten LXC oder einen eigenen (weil die fetter sind)
VM / ubuntu mit Docker / 4 / 8 GB / 128 GB
Das ist was zum interaktiven Arbeiten? Dann find ich eigene LXC da gut.

Ich nehme keine festen Disks ("Volumes") in den Containern, denn dann kann auf jedes volume nur 1 container zugreifen; also mit paperless direkt aus dem ubuntu Home lesen, das geht dann nicht. Ich würde da ZFS datasets nehmen (oder LVMs oder was Du da nutzt), logisch erzeugen (also pool/home, pool/webdocs oder was auch immer) und die dann in mehrere Container einbinden. Dann kann der dovecot Container direkt in /home schreiben. Weil ich immer Windows nehmen muss, hab ich auch eigentlich immer ein Samba LXC (priv=1) im AD hängen. Dabei muss man mit dem Usermapping natürlich aufpassen, das ist leider Handarbeit.

SUMME: 16 Core (von 8, also überbucht) / 27,5 GB (von 32 GB) / ca 250 Gb (von 1 TB)

Bitwarden, Jellyfin und Bookstack fehlen noch.

Ist alles noch im Test. Ich habe die VM mit Docker parallel aufgesetzt. Die Werte für die Ressourcen habe ich meistens aus Vorschlägen der Doku, außer bei Paperless, da bin ich beim RAM höher gegangen aus der Erfahrung.
Die meisten Container tun ja die meiste Zeit nichts, insbesondere die mit viel Ressourcenzuordnung wie Paperless sind die meiste Zeit arbeitslos. Daher meine Frage, ob da nicht Docker besser wäre. Vom reinen Handling her ist mir LXC lieber als Docker.
Na klar, wenn Du ein OCI docker image für Deinen Dienst kriegen kannst, nehm die doch, das verwaltet sich dann einfacher.
Im Moment teste ich halt beides: LXC und Docker. Ob der SQL Server als LXC oder VM läuft, muss ich noch schauen. Vielleicht ist eine VM ratsamer.
Für die Performance (und bei MS SQL kann man davon nie genug haben) wäre wohl LXC besser. Die table spaces vielleicht auf volumes (nicht auf datasets).
Aber am besten ersetzen, wenn möglich.
Ich frage mich mittlerweile auch schon, ob ich mit Proxmox die richtige Wahl getroffen habe, weil es ja eine Virtualisierungsumgebung ist und ob z.B. Unraid am Ende geeigneter wäre für meine Anforderung (ich hatte Unraid auch schon probiert, gefällt mir vom Handling aber überhaupt nicht).
zur Not läuft Unraid unter Proxmox ;)
Warum wäre unraid besser?
Weil es direkt docker macht (falls es das tut)?

Also rein technisch geht das mit Proxmox auch; die kannst auf WebGUI und alles PVE management verzichten, auf dem Proxmox host docker installieren und ich bin mir ziemlich sicher, dass das geht (https://forum.proxmox.com/threads/running-docker-on-the-proxmox-host-not-in-vm-ct.147580/). Da gibts dann auch frontends für docker (https://dev.yacht.sh/ oder sowas).
Aber (meistens) man möchte ja den docker Kram in eine Umgebung "einsperren" (isolieren), damit es nicht an die Backups kommt usw.
Oder sind die Dienste am Ende dann doch zu viel für einen Server und ich brauche einen zweiten?

Fragen über Fragen ...
Wieso, was passiert denn schlechtes?
Wenn es läuft und schnell genug ist, dann brauchst Du keinen zweiten (und vorher erstmal den RAM doppeln, wenn möglich).
Wenn es nicht schnell genug ist, dann erstmal gucken, warum, oft gibts ja Potential.
 
ach so meinst Du das. Du schriebst ja "der Kernel hat ja nie Bugs" oder sowas

Ja. Hatte ich so geschrieben. Da fehlte eindeutig ein Smiley :-(

So ist das eben mit der geschriebenen Kommunikation, Nuancen gehen gerne unter...
 
Ja. Hatte ich so geschrieben. Da fehlte eindeutig ein Smiley :-(

So ist das eben mit der geschriebenen Kommunikation, Nuancen gehen gerne unter...
Nee, der Smilie (also die Ironie) war mir schon klar.
Und eben weil der Kernel natürlich immer Bugs hat, kann auch KVM welche haben (und QEMU ohne KVM sicherer rein).
 
Einen Debian LXC Container inkl. inkl frischen Docker mit Portainer Installation keine ~3 Minuten.
CT Anlegen Debian als Basis . Unter Feature noch Keyctl & Fuse aktivieren.
Dann gehts los .
root shell / abdafür

timedatectl set-timezone Europe/Berlin
timedatectl set-ntp true

apt-get update && apt-get upgrade -y && apt autoremove -y && apt install curl -y

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

apt install fuse-overlayfs

echo '{
"storage-driver": "fuse-overlayfs"
}' | tee /etc/docker/daemon.json

~~~ rebooten / Neustarten ~~~

docker volume create portainer_data

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts

Webbrowser auf https:// What ever IP :9443

MAGIC zu ende keine 3minunten. Damit habe ich jeder Wette bis heute gewonnen , aber pssst =)
 
Nur mal so: Es ist ja schön und gut, dass man "irgendwie" auch Docker unter lxc betreiben kann, trotzdem würde ich das Anfängern absolut nicht empfehlen. Das ist auch eines meiner Probleme mit den einschlägigen Homelabbing-/Proxmox-Communities auf Reddit: Aufgrund der Beliebtheit von Helper-Skripten gilt das dort als Standard, dabei ist es wirklich keine sehr gute Idee: Die Proxmox Entwickler schreiben ja auf https://pve.proxmox.com/wiki/Linux_Container:
If you want to run application containers, for example, Docker images, it is recommended that you run them inside a Proxmox QEMU VM. This will give you all the advantages of application containerization, while also providing the benefits that VMs offer, such as strong isolation from the host and the ability to live-migrate, which otherwise isn’t possible with containers

In der Vergangenheit gab es immer mal wieder Berichte, wo nach einen Update einen solche Konstrukte dann um die Ohren fliegen, siehe zum Beispiel hier: https://forum.proxmox.com/threads/n...-alle-docker-lxc-container-nicht-mehr.119895/

Nun kann man das natürlich trotzdem machen, aber dann sollte man wissen, wie man das dann wieder repariert kriegt, das ist doch bei Anfängern oder Leuten, die einfach nur ein paar Dienste selbst hosten wollen, eher nicht der Fall.
Im Vergleich dazu ist eine VM deutlich robuster und (regelmäßige Backups vorausgesetzt) im Zweifel auch schnell wieder repariert, wenn man sich was verbastelt. Der gern genannte Vorteil von lxcs, dass man damit ja weniger Ressourcen brauchen würde, relativiert sich stark, wenn man eine Distribution mit wenig Overhead (alpine oder debian) für die Docker-VM nimmt und davon wegkommt für jeden Dienst einen eigenen Container/eine eigene VM brauchen zu müssen.
Für Sachen wie Jellyfin, die direkten Zugriff auf Hardware wollen (z.B. für Transcoding durch die Graphikkarte) kann man die Software ja im Regelfall auch ohne Docker im LXC installiert bekommen.


Just my two cents
 

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!