Aloha und seid mit gegrüßt. Heute wollte ich folgende Problematik mal angehen:
Ich habe häufiger Docker Container die ich sehr gerne mit einer eigenen IP in meinem Netzwerk versehen würde. Synology bietet mit Hausmitteln zwar an einen Container die selbe IP wie den Host zu geben, aber das möchte ich aus verschiedenen Gründen evtl nicht. Schon allein um mir ggfs den Webserver nichtzu blockieren oder einen anderen Dienst. Wir können mit der Standard GUI leider keine Ports umbiegen wenn wir die IP des Hosts nehmen. Normalerweise pakt Docker bei Synology alle Container in einen eigenen „Docker“Netz. Das klappt auch meistens gut aber manchmal hat aber manchmal funktioniert etwas nicht so wie man es sich vorstellt dann. Am beispiel vom pihole z.b. wäre das, das man keinerlei Infos hat welcher Host eigentlich wie sehr rumfunkt. Die Boardmittel zerstören komplett das logging vom Pihole (wenn nicht selbe IP wie Host).
Hier also eine kleine Anleitung wie man Docker auch in sein Heimnetz lässt.
Anmerkung: Wie immer wenn wir mit „root“ rechten rumspielen: Alles auf eigene Gefahr, potentiell könnten wir uns aussperren oder was kaputt machen
Zuersteinmal wird uns „Portainer“ weiterhelfen. Eine viel Leistungsstärkere GUI für Docker.
Als erstes legen wir den Docker Ordner für die persistenten Daten in der Filestation an.
Weitere Infos zu Portainer und Synology:
https://smarthome.buanet.de/2018/12/portainer-auf-der-synology-diskstation/
und nennen ihn „portainer“
Wir loggen uns jetzt via ssh in unser NAS ein. Dazu können wir z.b. putty verwenden oder ab Win 10 auch die normale „Kommandozeile“.
ssh BENUTZTER@IPvomNAS
bzw bei putty
auf der Konsole angekommen verlangen wir „root“ rechte, das geht wie folgt:
sudo -i
ausnahmsweise installieren wir den Docker Container „portainer“ via Konsole. Grund ist: der braucht zugriff auf die docker.sock datei, an die kommen wir mit der standard GUI aber nicht.
Der befehl lautet:
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /volume1/docker/portainer:/data portainer/portainer-ce
Der Befehl zieht, sofern nicht im cache, die aktuellste portainer/portainer-cd version. Der Container wird „portainer“ genannt und die notwendigen Verzeichnisse werden auch gleich mit verbunden. Die Ports 8000 und 9000 werden auch gleich mit gemappt.
Das wars an sich mit den Vorbereitungen.
Wer mehr infos für den folgenden Teil hat rund ums Thema Netzwerk und Docker:
https://smarthome.buanet.de/2020/09/macvlan-ueber-portainer-einrichten/
Jetzt können wir Portainer aufrufen unter „http://IPvomNAS:9000“. Die Gui wird uns auffordern einen User zu erstellen. Dem kommen wir nach und sind dann auch schon eingeloggt und bereit für die Action.
Wir gehen also auf Networks im Portainer und klicken auf „Add Network“
Wir legen jetzt eine Config für das Netzwerk an.
– Name: (frei wählbar)
– Driver: macvlan
– Parent network card : Eure Primäre Netzwerkverbindung, in meinen fall ovs_eth0.
um nach zu prüfen wie eure heißt schaltet euch via ssh auf euer Synology Gerät und lasst „ifconfig“ durchlaufen. Wir suchen das Gerät mit der IP womit ihr das Gerät sonst ansprecht
– Netzwork Configuration: okay, das ist nicht ganz trivial. Das ganze muss in der CIDR schreibweise hinterlegt werden. Das solltet ihr ggfs. euch ausrechnen lassen : cidr calculator
Bei mir sieht es so aus:
Das gibt mit ein IP Bereich für mein Docker zeug von 192.168.1.224 – 192.168.1.255.
Warum nehm ich ein Bereich soweit hinten ? Naja meine Fritzbox ist ja mein eigentlicher DHCP und liefert die Adressen. Das macht er bis zur IP 192.168.1.200. So kann ich sicherstellen das nicht 2 Geräte, egal ob physisch oder virtuell die selbe IP bekommen sollen. Wer mehr braucht kann sich wie gesagt einen anderen IP Bereich ausrechnen lassen mit einem beliebigen CIDR Rechner oder, auch optional, der gibt jetzt noch „excluded IP“ ein die der Docker auch nicht nutzen soll, z.b. weil bereits ein gerät auf 192.168.1.250 funkt und ihr das nicht ändern wollt/könnt.
Zum abschliessen und speichern auf „Create the network“ ganz unten link klicken
Okay, fast fertig:
Zurück zur Übersicht vom Portainer gehen wir nun wieder auf „+Add Network“
– Name: (frei wählbar)
– Driver: macvlan
– „Creation“ Knopf drücken, nicht wie vorher „Configuration“
– Configuration : MeineHeimnetzConfig (bzw euer frei gewählter Name)
– Enable manual Container attachment: true
haben wir das alles dann „Create the network“
Und das wars auch schon. Wir haben ein neues Netzwerk gebaut. Das kann auch von der Standard Synology Docker GUI genutzt werden. Wenn ihr dann also ein Container im Synology einrichtet könnt ihr bei Netzwerk auf „Hinzufügen“ gehen und das neue Netzwerk auswählen.
Ohne jetzt darauf ein zu gehen wie man mit Portainer auch Docker Container einrichtet will ich noch kurz auf die Frage eingehen: wie kann ich ein eingerichteten Container eine feste IP vergeben ?
Das geht wie folgt:
Wie gehen zu „Containers“ und wählen das zu editiernde Image aus.
Dann klicken wir auf „Duplicate/edit“
und tragen bei Network ein was wir da so brauchen:
und den Container „deployen“
Bonus:
So wählt ihr das Heimnetz mit der Standard GUI. Hier ist keine Feste IP ohne die Hilfe von Portainer möglich.
Die „bridge“ könnt ihr dann löschen dann siehts nur noch so aus:
und sowas werdet ihr in der Fritzbox dann wieder finden. Ein neues Gerät in der IP Range die wir vorher definiert haben. Und es antwortet wie erwartet:
Getestet mit Synology DS1517+ (DSM 7.0.1-42218 Update 2)