Docker Container eigene IP geben?

SvensenDE

Benutzer
Mitglied seit
12. Aug 2016
Beiträge
103
Punkte für Reaktionen
6
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
 

SebastianH

Benutzer
Mitglied seit
10. Dez 2010
Beiträge
365
Punkte für Reaktionen
2
Punkte
18
Möchtest Du es nur für den Datenfluss getrennt haben?
 

mkorthaus

Benutzer
Mitglied seit
18. Apr 2021
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
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

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
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?
 

mkorthaus

Benutzer
Mitglied seit
18. Apr 2021
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
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.
 

mkorthaus

Benutzer
Mitglied seit
18. Apr 2021
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
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.
 


 

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