Docker Container eigene IP geben?

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

SvensenDE

Benutzer
Registriert
12. Aug. 2016
Beiträge
139
Reaktionspunkte
14
Punkte
18
Abend

Ich hab DS718+ mit zwei Netzwerkkarten
DS 1 Port 192.168.1.37
DS 2 Port 192.168.1.46

Docker möchte ich gern Debian Server aufsetzten mit der port zwei aber bei netzwerk steht nur was mit bridge und wenn ich auf das + drücke
kommt "keine weiteren Netzwerke verfügbar"

ist möglich ihn die 192.168.1.46 zu geben oder vielleicht noch ganz andere IP?

hatte schon bisschen gegoogelt aber leider nix gerfunden was mir geholfen hat

Viele Grüße
 
Möchtest Du es nur für den Datenfluss getrennt haben?
 
Du kannst mit ifconfig

ifconfig eth0:1 192.168.1.1 netmask 255.255.255.255 broadcast 192.168.1.255 up

einem Deiner Interfaces eine weitere IP-Adresse (oder auch mehrere) hinzufügen, das setzt allerdings voraus, dass Du das Interface schon mit einer IP-Adresse oben hast. Danach kannst Du einem Container die IP-Adresse mitgeben. Da die Docker GUI der Synology das nicht wirklich unterstützt entweder im Dockerfile/Compose oder (so mache ich es) in Portainer - hier kannst Du beim Erstellen des Containers vor der Portnummer auch einfach die IP-Adresse an die er sich binden soll, eintragen (vgl. Screenshot):

192.168.1.1:8080

Nicht alle Container kommen damit aber klar und sehen diese IP von innen, so meine Erfahrung, das Binden nur an diese IP jedoch klappt. Da ist dann auch egal, an welchem Interface die IP gebunden ist. Mit dieser Methode kannst Du dann jedem Container auch nach außen eine eigene private IP geben. Da die Synology aber beim Neustart das IP-Interface via ifconfig mit abräumt, musst Du mit einem Cronjob beim hochfahren die Adresse wieder eintragen.

Viel Erfolg,

m.
 

Anhänge

  • Bildschirmfoto 2021-04-19 um 01.56.04.png
    Bildschirmfoto 2021-04-19 um 01.56.04.png
    98,7 KB · Aufrufe: 8
Per Default bindet Docker einen gemappten Port an alle Host-Interfaces. Mit -p ${host-interface-ip}:${host-port}:${container-port} kann man Docker dazu bewegen den Host-Port nur an eine bestimmte Host IP zu binden, genauer die iptables Regeln nur für diese Host-IP anzulegen. Das bezieht sich ausschließlich auf Datenverkehr der von außen nach innen gereicht werden soll und dessen Rückantwort (bspw: zugriff auf eine UI). Das hat KEINEN Einfluss darauf wenn die Verbindung von innen nach außen gereicht wird (Bspw. wenn ein Downloadclient Dateien aus dem Internet lädt).

Nicht alle Container kommen damit aber klar und sehen diese IP von innen, so meine Erfahrung, das Binden nur an diese IP jedoch klappt. Da ist dann auch egal, an welchem Interface die IP gebunden ist. Mit dieser Methode kannst Du dann jedem Container auch nach außen eine eigene private IP geben
Magst Du das mal genauer erklären?
 
Per Default bindet Docker einen gemappten Port an alle Host-Interfaces. Mit -p ${host-interface-ip}:${host-port}:${container-port} kann man Docker dazu bewegen den Host-Port nur an eine bestimmte Host IP zu binden, genauer die iptables Regeln nur für diese Host-IP anzulegen. Das bezieht sich ausschließlich auf Datenverkehr der von außen nach innen gereicht werden soll und dessen Rückantwort (bspw: zugriff auf eine UI). Das hat KEINEN Einfluss darauf wenn die Verbindung von innen nach außen gereicht wird (Bspw. wenn ein Downloadclient Dateien aus dem Internet lädt).

genau. War mir nur lange nicht klar, ich dachte ich teile meine Erkenntnisse, dass das in Portainer auch so geht. Sollte das redundantes Wissen gewesen sein, sei's drum :)
Magst Du das mal genauer erklären?
Scheinbar gibt es gewisse Base-Images, die die so "zugewiesene" IP nicht erkennen. Bei mir ist das konkret Ubuntu. Sollte es wie von Dir beschrieben (so tief bin ich in den Docker-Innereien nicht drin) sein, es also nur die Anpassung der Firewall sein, ist das auch verständlich.

Vielleicht hilft es dennoch dem ein- oder anderen hier, die Container auf verschiedene Adressen zu verteilen – oder besser: Deren eingehenden Traffic via Firewall besser zu separieren.
 
Verwende die Forum-Suche mit dem Begrif "MACVLAN". Da wird einiges zu finden sein.
Ist das ausreichend funktional mit dem veralteten gepatchten Docker im DSM? Ich habe mir mit zusätzlichen internen Bridge-Netzwerken beholfen, in denen dann plötzlich auch der interne Docker DNS funktioniert und ich im Proxy die Hostnamen auch ohne IP-Adressen verwenden kann. Auf diese Weise habe ich eine Datenbank nicht mehr an die externe IP des NAS gebunden, sondern nur an die interne Docker-IP. Ein Container, der diese db per DNS verwenden will, muss dann nur im selben Bridge-Network sein. Letztere kann sogar die Synology GUI erzeugen (ha!).

Ich erzähle Dir vermutlich aber nichts Neues, aber meine Setups scheinen mir dadurch auch bei einem Konfigurationsfehler in der Firewall sicherer.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat