Docker im Proxmox LXC?

LeSunset

Cadet 1st Year
Registriert
Nov. 2021
Beiträge
13
Hey Com,

ich bin neu was Server, Netzwerkstrukturen usw. angehen und beschäftige mich seit einigen Tagen mit den Videos von SemperVideo (vor allem gerade mit der 1€-Server-Serie).

In der 1€-Server-Serie benutzt er ja einen Proxmox-Server auf dem er später auch Docker/Portainer installiert.
Ich frage mich aber die ganze Zeit, was ist der Sinn dahinter?

Proxmox erstellt Container und Docker erstellt Container, also hat man am Ende doch einen Container im Container, oder verstehe ich da was falsch?

Macht es nicht mehr Sinn Proxmox ODER Docker zu verwenden und nicht beides?
Vor allem weil die Einsatzgebiete ja eigentlich die gleichen sind.

Kann mir das bitte jemand erklären warum es Sinn macht beides zu verwenden, ich blicke da leider nicht ganz durch.

Edit: Vor allem kostet das doch mega an Leistung, oder nicht? Zum Beispiel habe ich Wireguard und PiHole in Docker installiert, welches natürlich wiederum als LXC auf Proxmox installiert ist und ich musste die letzten Tage feststellen dass die Verbindung zu Wireguard einfach miserabel ist. Es braucht z.B. ewig am Anfang mich mit dem VPN zu verbinden. Wenn ich wiederum eine Wireguard Verbindung zu einer Wireguard VPN aufbaue welche nicht in Docker, sondern nur in einem Proxmox LXC installiert ist, funktioniert es problemlos.
 
Zuletzt bearbeitet:
Wenn dann Docker nativ auf dem Proxmox Host. Der LXC-Container ist doch von den Rechten her auch schon beschnitten.
 
  • Gefällt mir
Reaktionen: LeSunset
Docker solltest du besser in eine VM packen, die dann in Proxmox läuft.

Proxmox kann Container, ist aber primär für VMs. VMs und Container sind nicht das selbe.
 
  • Gefällt mir
Reaktionen: LeSunset
klapproth schrieb:
Wenn dann Docker nativ auf dem Proxmox Host. Der LXC-Container ist doch von den Rechten her auch schon beschnitten.

Was für ein Quatsch. Docker läuft problemlos in einem unprivilegierten LXC-Container. Ein privilegierter Container ist natürlich ebenfalls möglich, sollte aber nur in Ausnahmefällen nötig sein.

LeSunset schrieb:
Macht es nicht mehr Sinn Proxmox ODER Docker zu verwenden und nicht beides?
Vor allem weil die Einsatzgebiete ja eigentlich die gleichen sind.

Kann mir das bitte jemand erklären warum es Sinn macht beides zu verwenden, ich blicke da leider nicht ganz durch.

Das macht absolut Sinn. Proxmox ist ein Typ-1 Hypervisor, läuft also direkt auf der Hardware. LXC-Container laufen direkt auf dem Host, aber isoliert durch cgroups etc, also auf jeden Fall performanter als VMs, da die Abstraktionsschicht durch QEMU und KVM wegfällt.

LeSunset schrieb:
also hat man am Ende doch einen Container im Container, oder verstehe ich da was falsch?

LXC Container sind OS-Container, Docker-Container sind Applikations-Container. Das ist ein entscheidender Unterschied. Ein LXC-Container ist für dich ein komplettes Linux-System, auf dem du dich per SSH anmeldest. Ein Docker-Container beinhaltet nur die Applikation und deren Abhängigkeiten.

LeSunset schrieb:
und ich musste die letzten Tage feststellen dass die Verbindung zu Wireguard einfach miserabel ist. Es braucht z.B. ewig am Anfang mich mit dem VPN zu verbinden. Wenn ich wiederum eine Wireguard Verbindung zu einer Wireguard VPN aufbaue welche nicht in Docker, sondern nur in einem Proxmox LXC installiert ist, funktioniert es problemlos

Das ist eher ein Problem im Docker Networking und hat vermutlich weniger mit der Containerisierung zu tun.

NeoExacun schrieb:
Docker solltest du besser in eine VM packen, die dann in Proxmox läuft.

Proxmox kann Container, ist aber primär für VMs. VMs und Container sind nicht das selbe.

Warum? Meine komplette Infrastruktur läuft auf Proxmox in LXC-Containern. Ich habe nur eine einzige VM und das ist ein Windows-Server.

Und auch mein Docker läuft in einem unprivilegierten LXC-Container. Mit Portainer. Völlig problemlos.

Generell betreibe ich meinen Kram lieber in LXC-Containern. Weil ich ehrlich gesagt keine Lust habe, mich mit dem ganzen Docker Networking zu beschäftigen. Hier gibt es wunderbare Helper-Skripte, um Software mal eben schnell auf Proxmox in Containern zu deployen https://tteck.github.io/Proxmox/

Ich habe allerdings auch genügend RAM. Wenn es da eng wird, mag Docker sicher die bessere Wahl sein.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Nebuk, NeoExacun und LeSunset
@CoMo vielen Dank für deine sehr ausführliche Antwort, jetzt macht natürlich einiges mehr Sinn :)

Also ist Docker eher bequemer vor allem in Kombi mit Portainer, aber theoretisch könnte man auch alles in LXC Containern ohne Docker auf Proxmox installieren? (außer natürlich Ausnahmen wie Mailcow)

Weil wenn das Verbindungsproblem eher nen Docker-Problem ist, dann ist Docker für mich gerade eher uninteressant geworden.
 
Ja, wie gesagt, bei mir läuft alles in LXC-Containern:

waterfox_1c9BRLoVKS.png


Du musst natürlich bedenken, dass das auch viel RAM frisst. Ich habe hier einen Mini-PC mit 64GB RAM.

LeSunset schrieb:
Weil wenn das Verbindungsproblem eher nen Docker-Problem ist, dann ist Docker für mich gerade eher uninteressant geworden.

Das sollte nicht der Grund sein, LXC anstelle von Docker einzusetzen. Sondern eher Ansporn für dich, dich mehr mit Docker auseinanderzusetzen. Das Problem lässt sich mit Sicherheit auch mit Docker lösen.

Du kannst ja auch jederzeit Backups des Docker LXC-Containers anlegen und wiederherstellen.
 
  • Gefällt mir
Reaktionen: JumpingCat und LeSunset
Das mit dem Backup ist ein gutes Argument. Dennoch gibt es mit dem LXC-Container mehr Komplexität zum debuggen und updaten.
 
NeoExacun schrieb:
Proxmox kann Container, ist aber primär für VMs. VMs und Container sind nicht das selbe.

Dazu vielleicht noch eine Ergänzung: Wir deployen Proxmox LXC Container hier sogar im Enterprise-Umfeld.

Bei einem Kunden haben wir kürzlich den Samba-Fileserver in einem LXC-Container realisiert. Mit einem eingebundenen Mountpoint direkt auf das ZFS-Dataset auf dem Host. Mit allen ZFS-Vorteilen wie Kompression etc.

Eine VM verlangt eine virtuelle Festplatte mit eigenem Dateisystem. Das kann niemals effizienter sein als ein LXC-Container, dessen Prozesse direkt auf dem Host laufen.

klapproth schrieb:
Dennoch gibt es mit dem LXC-Container mehr Komplexität zum debuggen und updaten.

Stimmt. Wenn die Landschaft wächst, braucht man Werkzeuge wie Ansible / Salt / Terraform etc.

Aber mit ~10 Containern bekommt man das auch so hin. Und für den Docker Container gibt es ja Portainer.
 
  • Gefällt mir
Reaktionen: JumpingCat
Jeder Setup hat einen Grund. Hier geht es sicherlich um zuhause mal zu experimentieren.
Bei mir zuhause läuft Proxmox wegen OpnSense und ich bekomme ein ZFS ohne Aufwand dazu.

Auf Arbeit sieht natürlich alles anders und größer aus.
 
Alleine schon wegen der Anzahl an Problemen, welche im Proxmox Forum teilweise gepostet werden, würde ich Docker in einer eigenen VM installieren. Auch aus Sicht der Security in Bezug auf die Isolation ist das die bessere Variante.
 
Ich habe dazu auch nochmal eine Verständnis Frage.

Warum installiere ich Proxmox und habe dann diverse LXC Container, wenn ich z.B. auch einfach ein Linux nativ auf die Kiste installieren kann und dann sämtliche Anwendungen darauf in Docker laufen lasse?
 
Tekras schrieb:
Warum installiere ich Proxmox und habe dann diverse LXC Container, wenn ich z.B. auch einfach ein Linux nativ auf die Kiste installieren kann und dann sämtliche Anwendungen darauf in Docker laufen lasse?
Mit Proxmox hat man den Vorteil, dass man sich eine (Test)VM aufsetzen kann um was auszuprobieren. Nicht jeder nutzt die LXC Container.

Ich teste aktuell mit Proxmox diverse Distros.

1701601246445.png


Mein 24/7 Mini-PC hat nativ Ubuntu Server drauf. Ich überlege, ob ich hier zu Proxmox wechsle und VMs erstelle. Alles hat seine Vor-/Nachteile.
Ergänzung ()

CoMo schrieb:
Ja, wie gesagt, bei mir läuft alles in LXC-Containern:

Du musst natürlich bedenken, dass das auch viel RAM frisst. Ich habe hier einen Mini-PC mit 64GB RAM.
Wie hoch ist dein SWAP in Proxmox?

Und wie sieht i/o wait mit vmstat -wSm 1 (wa Spalte) unter Last bei den vielen Containers aus?

Ich nutze auch mehrere Docker Container. Die, die ich nehme, starten oft noch eigene PostgreSQL DB. Ich konsolidiere es und habe dafür eine eigene PostgreSQL 16 Instanz und nutze diese aus den Docker Containern. Bei den meisten Tools geht es. So spare ich an Ressourcen und es läuft performant.
Ergänzung ()

CoMo schrieb:
Generell betreibe ich meinen Kram lieber in LXC-Containern. Weil ich ehrlich gesagt keine Lust habe, mich mit dem ganzen Docker Networking zu beschäftigen. Hier gibt es wunderbare Helper-Skripte, um Software mal eben schnell auf Proxmox in Containern zu deployen https://tteck.github.io/Proxmox/
Wenn man sein System optimieren will, dann muss man sich schon mit beschäftigen.
CoMo schrieb:
Ich habe allerdings auch genügend RAM. Wenn es da eng wird, mag Docker sicher die bessere Wahl sein.
Linux mag viel RAM. Das ist gut. Die meisten lassen ihre VMs mit viel zu wenig RAM laufen.

Dass es gut ist, sieht man an am buff/cache
Code:
$ free -m
               total        used        free      shared  buff/cache   available
Mem:           31704        6265         748        1806       24691       23467
Swap:           4095           0        4095
Und auf meinem Mini-Server laufen schon einige Sachen.
 
Zuletzt bearbeitet:
Tekras schrieb:
Warum installiere ich Proxmox und habe dann diverse LXC Container, wenn ich z.B. auch einfach ein Linux nativ auf die Kiste installieren kann und dann sämtliche Anwendungen darauf in Docker laufen lasse?
Das sollte die Frage beantworten:
CoMo schrieb:
LXC Container sind OS-Container, Docker-Container sind Applikations-Container. Das ist ein entscheidender Unterschied. Ein LXC-Container ist für dich ein komplettes Linux-System, auf dem du dich per SSH anmeldest. Ein Docker-Container beinhaltet nur die Applikation und deren Abhängigkeiten.

Und es ist eben vom individuellen Use Case und persönlichen Vorlieben abhängig.

Habe ich nativ Linux installiert mit Docker.. wie sichere ich das?
Wie mach ich schnell einen Snapshot, wenn ich was experimentelles auf dem Host teste?
Wie bringe ich das auf andere Hardware wenn der Host ausfällt?
Proxmox kannst du mittlerweile auf jeder 10 Jahre alten Kiste installieren und die VMs aus dem Backup recovern. Die VMs (auch die Docker VM mit allen Containern) merken keinen Unterschied, dass das neue Hardware ist. Die Kiste sollte nur ne anständige Menge RAM haben oder man schränkt sich halt temporär aufs nötigste ein.

Klar, der Proxmox Unterbau frisst Leistung und damit auch Strom.
Alles was ich auf Proxmox hoste lief zuvor auf einem Pi3B mit 3W Idle.
Der Proxmox Host frisst aktuell ca. 9W idle, aber daran feile ich noch.
Performance ist auf einem mobilen Haswell i5 genug da für die paar Sachen.
 
Zurück
Oben