Internetzugriff auf Proxmox VMs / Docker Container hinter OPNsense mit Reverse Proxy

spooner

Member
Sep 7, 2022
40
6
13
Hallo Zusammen,
ich muss den Zugriff auf mehrere VMs auf einem Proxmox Host übers Internet freischalten.
Als Firewall ist eine OPNsense auf einer eigenen Hardware im Einsatz.
Außerdem soll ein Reverse Proxy auf dern OPNsense eingerichtet werden.
Vlans sind auch im Einsatz und werden noch erweitert.
Jetzt sollen auch noch Docker Installation eingerichtet werden.

Nun meine Frage an euch:
Um das ganze Konstrukt möglich sicher zu machen sollten die Docker Container in einer eigenen VM laufen und nicht direkt auf dem Proxmox Host?
So sind alles VMs von einanderen isoliert und auch die Software im Docker Container, richtig?

Gruß Arthur
 
Meine Empfehlung ist auch docker auf einer VM, wenn du die Forum Suche genutzt hast müssten dir dazu einige treffen angezeigt werden
 
Jetzt wirklich aus Interesse: wieso? Was ist verkehrt an Docker?
Es läuft standardmäßig als root, der rootless-Modus wurde erst später drangeflanscht. podman kann die gleichen Images laufen lassen und ist da besser durchdacht. So braucht podman keinen sls root laufenden Dienst und ist gut mit systemd integriert. Folgender Artikel ist etwas älter, gibt aber einen guten Überblick:
https://www.linux-magazin.de/ausgaben/2020/09/podman/

Leider kann man nicht direkt compose-Files verwenden, außer über Skripte zum Konvertieren oder den ( Aussage der podman-Entwickler) Hack podman-compose.

Ich habe schon länger auf meiner todo meine docker-Container zu podman zu konvertieren, bin da aber bisher nicht dazu gekommen *sigh*
 
  • Like
Reactions: Browbeat
Das ist mir bewusst, aber wie du erwähnt hast, kann man ja Docker rootless laufen lassen. Man kann auch rootless Images verwenden. Und man muss ja auch nicht den Docker Socket durchreichen :D
Ich hab auf meiner Todoliste Podman und Docker rootless stehen und vielleicht mal NixOS ausprobieren :)..... Also erstmal beides genau angucken und eventuell IRGENDWANN umstellen. Für mich ist es keine wirklich Alternative alles einzeln zu installieren. Da ist man ja nur noch mit der Pflege beschäftigt.
 
Jetzt wirklich aus Interesse: wieso? Was ist verkehrt an Docker?
Virtualisierung soll m.E. Virtualisierungs-Host und VMs so strikt wie möglich trennen. Genau das tut Docker eben so bzw. nicht das mir schwindelig wird. Stattdessen holst du dir Probleme ins Haus, die man echt nicht braucht.
Selbst LXCs trennen nur halbgar und sind in meinen Augen ungeeignet für eine verlässliche Virtualisierung.
 
Das ist mir bewusst, aber wie du erwähnt hast, kann man ja Docker rootless laufen lassen. Man kann auch rootless Images verwenden. Und man muss ja auch nicht den Docker Socket durchreichen :D
Ich hab auf meiner Todoliste Podman und Docker rootless stehen und vielleicht mal NixOS ausprobieren :)..... Also erstmal beides genau angucken und eventuell IRGENDWANN umstellen. Für mich ist es keine wirklich Alternative alles einzeln zu installieren. Da ist man ja nur noch mit der Pflege beschäftigt.
Verstehe ich nicht. Wenn du deine Dienste sauber getrennt haben willst, dann bleibt halt nichts anderes als die isolierten VMs einzeln unter Wind zu halten. Irgendwie klingt das nach "Wasch mir den Pelz, aber mach mich nicht nass"
 
Ich glaube das würde hier den Thread sprengen. Ich sehe halt das Problem nicht, wenn ich mehrere Anwendungen auf einer VM in Docker laufen lassen. Also wo ist da die fehlende Isolation. Wenn man Podman oder Docker rootless nutzt, dann haben die Anwendungen doch auch keine Rechte um überhaupt was machen zu können. Aber wie gesagt, das geht in dem Thread vielleicht zu weit am Thema vorbei. Und vielleicht fehlen mir auch einfach die Kenntnisse um das zu verstehen. Ich bin halt kein Admin. Ich kenn Proxmox nur aus dem Homelab.
 
Virtualisierung soll m.E. Virtualisierungs-Host und VMs so strikt wie möglich trennen. Genau das tut Docker eben so bzw. nicht das mir schwindelig wird.
Wenn man docker in einer vm laufen lässt, tut man das doch? Wenn der OP die docker-Container direkt auf dem Host laufen lassen wollen würde oder in lxcs könnte ich das Argument ja nachvollziehen, aber das ist ja gerade nicht die Frage
 
Wenn man docker in einer vm laufen lässt, tut man das doch? Wenn der OP die docker-Container direkt auf dem Host laufen lassen wollen würde oder in lxcs könnte ich das Argument ja nachvollziehen, aber das ist ja gerade nicht die Frage
Klar. Mir wäre aber der potentielle Stress mit mehren Docker-Container innerhalb eines "Docker-Hosts" schon zuviel. Deshalb eine VM pro Docker, falls die SW nur als Docker geliefert wird.
 
  • Like
Reactions: Johannes S
Ich glaube das würde hier den Thread sprengen. Ich sehe halt das Problem nicht, wenn ich mehrere Anwendungen auf einer VM in Docker laufen lassen. Also wo ist da die fehlende Isolation. Wenn man Podman oder Docker rootless nutzt, dann haben die Anwendungen doch auch keine Rechte um überhaupt was machen zu können. Aber wie gesagt, das geht in dem Thread vielleicht zu weit am Thema vorbei. Und vielleicht fehlen mir auch einfach die Kenntnisse um das zu verstehen. Ich bin halt kein Admin. Ich kenn Proxmox nur aus dem Homelab.
Die Isolation fehlt dann nur in deinem "Dockerhost". Läuft dort eine Docker-Anwendung Amok, sind alle anderen womöglich mitbetroffen. Kann man mit Leben, denn man hat ja ein Backup des "Docker-VM-Hosts".
Mir gefällt es nicht. Ist irgendwie doppelgemoppelt.
 
Mir wäre aber der potentielle Stress mit mehren Docker-Container innerhalb eines "Docker-Hosts" schon zuviel.
Welcher Stress? Ich hatte da noch nie ein Problem. Wenn ein Container mal nicht wollte, dann hatte es noch nie Auswirkungen auf einen anderen Container. Hast du da mal ein konkretes Beispiel?
Läuft dort eine Docker-Anwendung Amok, sind alle anderen womöglich mitbetroffen.
In wiefern? Wenn ich der Anwendung die Ressourcen zuweise, dann kann sie auch nicht mehr RAM verbrauchen oder CPU oder sonst was. An die Daten anderer Anwendungen kommt die ja auch nicht. Jedes Compose erzeugt ja schon per default ein eigenes Bridge Netzwerk => Können nicht kommunizieren, außer man packt sie selber ins selbe Netz.
Auch da... Hast du ein Konkretes Beispiel?
 
Stress mit Netzwerk, Portweiterleitung, NAT, Mounting oder gar dem zugrundeliegenden Hypervisor reichen mir schon. Inwieweit nun einzelne Docker sich innerhalb einer Dockerumgebung gegenseitig beeinflussen steht auf einem anderen Blatt.
Schon das "russsische Püppchen"-Prinzip stößt mir aber sauer auf.
Aber wie bereits erwähnt kann man das machen...
Wenn Dockeranwendungen nun alle ihre benötigten libs mitbringen, warum nicht gleich als einzelne KVM-VM betreiben, sondern sich zusätzliche Fehlerquellen wie Docker ins Boot holen?
Wie schon Cäsar sagte: divide et impera.
 
Stress mit Netzwerk, Portweiterleitung, NAT, Mounting oder gar dem zugrundeliegenden Hypervisor reichen mir schon.
Noch nie erlebt..... Weiß auch um ehrlich zu sein nicht wie das passieren sollte.
Wenn Dockeranwendungen nun alle ihre benötigten libs mitbringen, warum nicht gleich als einzelne KVM-VM betreiben, sondern sich zusätzliche Fehlerquellen wie Docker ins Boot holen?
Genau das seh ich halt anders. Docker bringt eben genau das alles mit was die Anwendung braucht. Man muss eben nicht genau die Version erst installieren. Es ist für die Entwickler auch viel einfach support zu geben. Man geht nämlich immer von der selben Umgebung aus. Auch Updates sind um einiges einfacher. Statt z.B. Redis, PostgreSQL und die Anwendung selber zu updaten und auch immer auf die richtige Version, reicht bei Docker ein Befehl. Das selbe mit einem downgrade. Gut PostgreSQL ist da ein schlechtes Beispiel, aber glaube es wird klar was ich meine. Vor allem trennt man so auch die Daten und die Anwendung selber. Umzug Daten kopieren und Container hochfahren und es läuft alles wie vorher. Das schafft man eben nicht so leicht und schnell, wenn man alles nativ installiert. Und da sehe ich auch keinen Vorteil mehr.
Wie gesagt, vielleicht fehlt mir das Wissen, aber ich sehe keinen Vorteil bei vielen Anwendungen wenn man es nativ installiert. Gerade im Homelab. Da würden die Ressourcen die ich habe nicht reichen für die ganzen Container.
Du hast leider auch keine Konkreten Beispiel genannt wo das ein echtes Problem wäre oder gab. Nur, dass du es nicht magst.
 
Die möglichen Probleme stecken immanent in einer weiteren Zwischenschicht.
Wenn du schon soetwas wie Proxmox am Start hast, gibt es keinen Grund ohne Not diese zusätzlich einzubauen.
Man kann es technisch umsetzen. Gut ist es aber nicht.
Zum Schluss hat du zwar einen ordentlichen Host, aber die Dockeranwendungslieferenten sind womöglich zu faul. Wieviele Dockeranwendungen willst du denn im Auge behalten, statt einmal die Basis aktuell zu halten und dem Anwendungsanbieter auf die Füsse zu treten sein Programm gefälligst zu aktualisieren.
Da wedelt doch der Schwanz mit dem Hund.
Wenn der Anbieter hartleibig und partout nicht ersetzbar ist, läuft seine Anwendung eben in einer KVM-VM und Proxmox liefert die Userumgebung. Dazu brauche ich kein halbseidenes Docker, wenn ich einen PVE am Start habe.
 
Last edited: