Container feste IP aus lokalen Netzwerk vergeben

iLion

Benutzer
Mitglied seit
07. Okt 2008
Beiträge
355
Punkte für Reaktionen
4
Punkte
18
Inspiriert durch den Beitrag zu Pi-hole wollte ich diesen Container auch ausprobieren, komme aber mit meinem Synology DNS-Server und dem Web Station Paket in Konflikt. Bisher habe ich aber nicht herausgefunden, wie ich über die Benutzeroberfläche vom Docker-Paket dem Container eine statische IP aus meinem Netzwerk zuweisen kann, so dass damit dann auch die Ports frei wären. Da das ja mit dem Docker DSM grundsätzlich geht, müsste es doch auch für alle anderen Container möglich sein?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Kurzfassung: ich war der Meinung das mal hinbekommen zu haben... mit ein wenig Trickserei (man muss root sein im Container) und den passenden Capabilites kann man die IP-Ändern..
Aber: man ändert gleich die IP der DSM mit!! Das will wohl keiner:

docker-compose.yml:
Code:
version: '2.0'

services:
  ubuntu-xfce-vnc:
    restart: alway
    build: .
    network_mode: host
    cap_add:
     - NET_ADMIN
    volumes:
     - /volume2/docker/haydibe/ubuntu-xfce-vnc/interfaces:/etc/network/interfaces
    environment:
     - TZ=Europe/Berlin
     - VNC_COL_DEPTH=16
     - VNC_RESOLUTION=800x600
     - VNC_PW=secret


Root-Rechte erlangen, klappt.

Dockerfile:
Code:
## Custom Dockerfile
FROM consol/ubuntu-xfce-vnc

## Install a gedit
USER 0
RUN apt-get install -y

Interface eth0 auf dhcp umstellen -> klappt nicht; aber dank root über die Shell schon!
interfaces:
Code:
auto eth0
iface eth0 inet dhcp
 

iLion

Benutzer
Mitglied seit
07. Okt 2008
Beiträge
355
Punkte für Reaktionen
4
Punkte
18
Irgendwie ist meine Antwort im anderen Thread wohl verloren gegangen. Ich habe zwischenzeitlich dieses Video von Pi-hole auf einem FreeNAS System gefunden. Da wird das ganze schön über die Oberfläche vom FreeNAS ganz ohne gefrickel gelöst. "bridge" Modus für das Netzwerk, lokale IP eingetragen, ServerIP Variable passend gesetzt, fertig. So stelle ich mir das unter dem DSM Docker auch vor. Das FreeNAS Pi-hole Docker Image basiert übrigens wohl auf dem von diginc, was ich im Moment getestet habe.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Es passt einfach irgendwie nicht zusammen, dass der Netzwerkmodus "bridged" ist UND der Container trotzdem im selben Netzwerk läuft wie der FreeNAS-Server selber.
Man kann durchaus ein Bridged-Netzwerk mit der IP-Range seines Netzwerkes anlegen und dann dem Container sogar eine fest IP geben. Aber: man kommt von aussen nicht drauf..
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Nachdem in dem Video auch NAT als Netzwerk-Modus zu sehen war, bin ich fest davon überzeugt das Bridged in der Docker UI bei Corral etwas anderes meint und zwar eher das Erstellen einer Netzwerkbrücke (so wie es auch bei Virtualbox passiert bei bridged) im Host Os und nicht im Container. Alles andere sind "Umwelt"-Variablen des eingesetzen Containers, das sollten wir unter DSM auch hinbekommen. Aber den verwendeten Netzwerk_Modus haben wir nicht!
 

iLion

Benutzer
Mitglied seit
07. Okt 2008
Beiträge
355
Punkte für Reaktionen
4
Punkte
18
Schade, ich habe mal den Synology Support in Taiwan angeschrieben. Mal sehen was dabei heraus kommt.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Wichtig ist dabei denen die Doppeltbelegung des Begriffs "Bridged" klar zu machen.

In Docker: Bridged -> Bedeutung Corral: NAT
In Docker: Host -> Bedeutung Corral: Bridged

Ich werde mir wohl mal eine Corral-VM auf einem anderen Host installieren - sieht ja sehr interessant aus was die mit Docker können.
DSM hat zwar eine eingeschränkte, aber durchaus charmante UI - ich wüsste nicht, wo man sonst Container stoppen, Parameter ändern und neu starten könnte...
Bei anderen Werkzeugen, kann man höchstens "Kopien" eines Containers mit geänderten Parametern starten... am Ende hat man dasselbe Resultat..aber es nicht ganz so charmant.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Da war ich gestern nicht klar genug;
In Docker: Host -> Bedeutung Corral: Bridged

In Docker: das pysikalische Netzwerkgerät vom Host wird mitverwendet, daher: Host und Container haben dieselbe IP (durch "Open vSwitch", kann man das entschärfen und Syno läuft dann über ovl_eth0 statt eth0, DockerDSM und vDSM benötigen es ebenfalls!)
In Corral: ein logisches Netzwerkgerät wird angelegt und verwendet, dies kann dann auch eine andere IP haben als das pysikalische Netzwerkgerät.
 
Zuletzt bearbeitet:

iLion

Benutzer
Mitglied seit
07. Okt 2008
Beiträge
355
Punkte für Reaktionen
4
Punkte
18
Ich habe den Open vSwitch aktiv, da ich auch eventuell einen virtuellen DSM zum testen nutzen werde. Zudem habe ich eben noch einen Test mit dem Netzwerk gemacht. Aber irgendwie ist mein Verständnis für die Logik dahinter falsch. Denn wenn ich den Container diesem Netzwerk zuweise, erhalte ich dennoch den Fehler, dass die Ports schon belegt sind. Auch ist mir nicht klar, was Synology mit dem Punkt IP Masquerade meint. Ob an oder aus macht in diesem Test keinen Unterschied. Leider muss man immer das ganze Netzwerk löschen, ändern geht nicht.

pi-hole-netzwerk.png
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Nochmal zu Docker in Corral: es werden spezielle Docker-Cotainer für FreeNAS über Dockerhub bereitgestellt.
Diese enthalten Meta-Informationen, die dafür sorgen das man die Container in FeeNAS so flexibel konfigurieren kann.So richtig geil ist das auf den ersten Blick nicht.
Einen Weg "einfach mal eben" irgendein Image von Dockerhub (oder einem eigenen privaten Repo) zu ziehen habe ich auf die schnell nicht gefunden.

Ausserdem ist Corral deutlich umständlicher zu nutzen als DSM (fest Navigationsstruktur vs. ein "Desktop im Browser"). Ich bin noch nicht überzeugt, dass es sich lohnt dafür einen Rechner durchgehen laufen zu lassen. Und die Hardware-Anforderungen sind auch nicht so ohne.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Mit Masquarade ist NAT gemeint, Clients im Netzwerk nach ausser verscheiern (-> "Docker" bridged)

Wenn überhaupt klappt es nur mit deaktiviertem IP Masquarade. Frage ist nur ob die Syno dann auch automatisch das Gateway im "neuen" Netzwerk und das Routing zwischen dem bestehenden und dem "neuen" Netzwerk automatisch hinzufügt.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Mittlerweile weis ich grob, wie Corral Docker umsetzt:

Es können beliebig viele Docker Hosts auf einem Corral Host installiert werden. Diese werden jeweils in isolierten VM's mit dem boot2docker Image betrieben (das was Windows und MacOS brauchen um Docker-Container laufen zu lassen). Jede dieser "Docker Host VMs" kann Ihre eigene IP aus dem Host-Netzwerk haben.

Die Docker-Images werden statt direkt über Dockerhub über Github gezogen, wo entsprechende Templates liegen, die ein Image ziehen und um FreeNAS spezifische Meta-Daten anreichern. Es ist also ein eigenst für FreeNAS ausgelegte winzige Teilmenge dessen was auf Dockerhub zu finden ist. Vermutlich müsste man ein eigenes Template für Images eines eigenen privaten Docker-Repos verwenden, um diese überhaupt verwenden zu können.

Was gut gemacht wurde, ist das Verzeichnisse direkt in die "Docker-Host-VM" und von dort aus in dem Container gemapped werden können.


Während bei Synology ein leicht modifizierter Docker-Host direkt auf dem Host installiert ist. Images können direkt von Dockerhub oder einem eigenen private Repo gezogen und verwendet werden. Man könnte das Verhalten von Corral nachahmen, in dem man VirtualBox installiert und dort ebenfalls boot2docker installiert. Hier können genauso Verzeichnisse in die VM gemountet werden, ABER: danach hat mein keine schöne UI mehr um Images/Container zu verwalten.

Beide Ansätze sind vollkommen unterschiedlich und gefühlt ist der Synology-Ansatz näher an dem, wie Docker eigentlich gedacht ist.
Aus meiner Sicht gibt es keinen Grund neidisch auf Corral sein zu müssen, zumal Corral laut Post im Corral Forum bzw. offiziellen YouTube Videos wohl auch nicht mehr weiter gepflegt wird...
 

Whitesheep

Benutzer
Mitglied seit
29. Mai 2009
Beiträge
81
Punkte für Reaktionen
2
Punkte
14
Hi ihr,

seid ihr hier mittlerweile weiter gekommen oder habt vielleicht sogar eine Lösung gefunden?
Ich stehe nämlich vor dem selben Problem das ich 2 Docker brauche die Ports aber schon von der Syno belegt sind (DNS-Server und Samba).
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.473
Punkte für Reaktionen
357
Punkte
103
Man könnte die Docker IP in der Konfigurationsdatei festlegen:

einfach den Inhalt der Datei dockerd.json ergänzen um die rot geschriebene Einstellung:
Code:
root@dsm:~# cat /var/packages/Docker/etc/dockerd.json
{
        "ipv6": true,
        "registry-mirrors": [][COLOR=#ff0000],
        "ip": "0.0.0.0"[/COLOR]
}

Wobei statt 0.0.0.0 die IP des Interfaces angegeben werden muss.

Samba könnte man ebenfalls gegen den Namen eines Interfaces binden:
Code:
root@dsm:~# cat /etc/samba/smb.conf
[global]
        printcap name=cups
        winbind enum groups=yes
        include=/var/tmp/nginx/smb.netbios.aliases.conf
        security=user
        local master=no
        realm=*
        passdb backend=smbpasswd
        printing=cups
        max protocol=SMB2
        winbind enum users=yes
        load printers=yes
        workgroup=WORKGROUP
[COLOR=#ff0000]        bind interfaces only = yes
        interfaces = lo eth0[/COLOR]
eth0 muss entsprechend gegen das Interface getauscht werden, auf dem Samba horchen soll!

Docker und Samba müssen danach natürlich neu gestartet werden; ggf. die Diskstation danach neu durchstarten.

Wo das beim DNS-Server einzustellen ist, weiß ich nicht, da weder DHCP noch DNS Server von der Diskstation laufen habe.
Das sollten die notwendigen Änderungen sein, ist aber nicht überprüft.

Warnung: Die Einstellung kann nach einem Update der DS oder dem Docker-Package wieder weg sein...

Die Variante mit Boot2Docker in einer VM ist zwar die aufwändigere, aber langfristig zuverlässigere Lösung...
 
Zuletzt bearbeitet:

Ben2013

Benutzer
Mitglied seit
01. Nov 2021
Beiträge
110
Punkte für Reaktionen
10
Punkte
18
Stehe auch vor einer vergleichbaren Aufgabenstellung, einem Docker-Container eine eigene IP zuzuweisen.

Auf der Webseite https://www.synology-forum.de/threads/multi-ip-adressen-fuer-synologie-ds918.96656/ wird ein interessanter Ansatz geschildert, indem via Aufgabeplaner ifconfig-Anweisungen ausgeführt werden.

Im Terminal kann man auch sehen, dass die neuen statischen IP-Adressen einem Ethernet-Anschluss zugewiesen worden sind. Dennoch sind diese IP-Adressen im Docker Container nicht auswählbar. Hier steht weiterhin nur zur Auswahl, die gleiche Host-IP-Adresse zu verwenden.
 

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.257
Punkte für Reaktionen
920
Punkte
174
Stichwort MACVLAN - Hier kann ich Portainer als Verwaltungsoberfläche empfehlen. Die Docker-GUI in DSM ist im Funktionsumfang stark begrenzt.
 

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
13.858
Punkte für Reaktionen
4.783
Punkte
499

Ulfhednir

Benutzer
Sehr erfahren
Mitglied seit
26. Aug 2013
Beiträge
3.257
Punkte für Reaktionen
920
Punkte
174
Wobei sich das Video auf die ältere Portainer-Version beschränkt und nicht das aktuelle portainer-ce entspricht.
Skript wäre entsprechend anzupassen. Die Installation lässt sich am schnellsten über die Aufgabenverwaltung durchführen - damit spart man sich das Geraffel mit der Shell.

docker run -d -p 9000:9000 --name portainer-ce --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer_data:/data portainer/portainer-ce

Bei mir war zur Installation der interne Port 9000 durch eine andere Anwendung belegt, dann wäre die erste 9000 zu ersetzen.
Also z.B. 8889:9000
 

Ben2013

Benutzer
Mitglied seit
01. Nov 2021
Beiträge
110
Punkte für Reaktionen
10
Punkte
18
Im Docker wurde der Portainer-ce erfolgreich installiert. Dieser läuft auch erfolgreich.
Ein Admin-Account wurde auch erstellt.
Wie geht es nun weiter?
 


 

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