container feste IP

Status
Für weitere Antworten geschlossen.

immoteb

Benutzer
Mitglied seit
08. Mai 2013
Beiträge
89
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich finde einfach keine Möglichkeit, das UI zu nutzen und den Containern feste IPs zuzuweisen. Das ist aber natürlich eine Grundvoraussetzung, wenn man mehrere mit unterschiedlichen Jobs laufen hat, oder? Wie regelt ihr das, verzichtet ihr auf die grafische Oberfläche?
 

Solear

Benutzer
Mitglied seit
05. Aug 2014
Beiträge
224
Punkte für Reaktionen
0
Punkte
16
Ich habe meine 6 Container mit unterschiedlichen Ports auf dem Host laufen lassen. Ich erreiche sie dann durch die Syno-IP und einem (für jeden Container eigenen) Port.
 

TeXniXo

Benutzer
Mitglied seit
07. Mai 2012
Beiträge
4.948
Punkte für Reaktionen
99
Punkte
134
Das tue ich auch so und ist mE die saubere Lösung.
 

immoteb

Benutzer
Mitglied seit
08. Mai 2013
Beiträge
89
Punkte für Reaktionen
0
Punkte
0
Das schaue ich mir auch grad an, ist aber mit der UI irgendwie nicht so einfach... Sobald ich für einen Container das host netzwerk auswähle, kann ich in den Tabs nichts mehr ändern, auch die Portweiterleitungen nicht. Ich hatte die Hoffnung, ich könnte das dann per Umgebungsvariablen regeln, aber das scheint auch nicht zu gehen.

Wie managed ihr eure Containter, die das host netzwerk nutzen? Per docker compose?
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Es kommt darauf an was man vorhat...

Bei einer Docker-Engine (die sich nicht im Swarm-Mode befindet) verwendet man eigentlich immer den Bridged-Mode, ausser es gibt Gründe die für den Host- bzw. Macvlan-Mode sprechen.

Host-Mode:
+ bessere Netzwerk-Performance
- Alle Container-Ports werden am Host gebunden
- Port-Kollision möglich

Bridged-Mode:
+ Host-Port im Mapping flexibel wählbar UND kann sogar gegen eine der Host-IPs gebunden werden.
+ Es müssen nicht alle Ports gemapped werden
- Netwerk-Performance suboptimal

MACVLAN-Mode:
+ besser Netwerk-Performace
+ eigene IP, die aus dem Hostnetz erreichbar gemacht werden kann möglich
- Aufwändig zu konfigurieren
- Der Docker-Host kann nicht mit einem solchen Container reden

Zum erstellen der Start-Konfiguration ist es immer ratsam ein Compose-File oder ein Bash-Skript zu "basteln" (Anmerkung: ich hasse es über die UI Einstellungen vorzunehmen). Das lohnt sich sogar wenn die App nur aus einem Container besteht. Besteht die App aus mehr als einem Container, dann lohnt es sich um so mehr.

Idealerweise bündelt man eine logische Anwendung innerhalb einer Compose-Datei. Ich betrachte nzbget und Sonarr bspw. nicht als eine logische Anwendung. Gitlab mit seiner Postgres- und Redis-Datenbank schon.

Bei mir läuft fast alles im Bridged mode. DIe Container greifen dabei über dsm:{host-port-des-jeweiligen-containers} aufeinander zu. Niemals versucht einer dieser Container eine interne IP zu verwenden. Selbst bei Gitlab wird nicht über die IP-Adresse kommunziert, sondern über einen Netzwerk-Alias.
 

immoteb

Benutzer
Mitglied seit
08. Mai 2013
Beiträge
89
Punkte für Reaktionen
0
Punkte
0
Danke dafür, aber die Unterschiede sind mir klar. Auch meine Frage hast du beantwortet: du verwendest die GUI dafür nicht.

Mein Grund für die Verwendung der GUI ist, dass ich häufig von unterwegs darauf zugreifen will und von dort keinen Zugriff auf die Komandozeile habe. Ausschließlich Webbrowser ist möglich. Dann mal eben einen Container durchstarten geht nur schlecht ohne Zugriff per SSH oder ähnliches.
Der Nachteil dieser Methode ist, dass ich keine festen IPs zuweisen kann. Das bedeutet, wenn ich je einen Container für DB, und diverse Apps habe, kommt es auf die Startreihenfolge an, wer welche IP bekommt. Diese dann in Erfahrung zu bringen, braucht auch wieder Zugriff auf die CMD.
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Danke dafür, aber die Unterschiede sind mir klar. Auch meine Frage hast du beantwortet: du verwendest die GUI dafür nicht.

Mein Grund für die Verwendung der GUI ist, dass ich häufig von unterwegs darauf zugreifen will und von dort keinen Zugriff auf die Komandozeile habe. Ausschließlich Webbrowser ist möglich. Dann mal eben einen Container durchstarten geht nur schlecht ohne Zugriff per SSH oder ähnliches.

Für Container neustarts verwende ich durchaus die UI, meist klappt das auch problemlos für Container, die als Verbund über compose gestartet wurden.
Wobei ich die UI ausschließlich lokal nutze. DSM aus dem Internet erreichbar zu machen ist mir persönlich zu unsicher. Den SSH-Server mit reiner key-auth könnte ich noch verstehen.

Der Nachteil dieser Methode ist, dass ich keine festen IPs zuweisen kann. Das bedeutet, wenn ich je einen Container für DB, und diverse Apps habe, kommt es auf die Startreihenfolge an, wer welche IP bekommt. Diese dann in Erfahrung zu bringen, braucht auch wieder Zugriff auf die CMD.

Nur bei der Verwendung von macvlan muss man zwingend die IPs kennen - da keiner der dafür notwendigen Schritte über die UI gemacht werden kann, gehe ich davon aus, dass Du das nicht verwendest. Bei allem anderen: was funktioniert denn nicht wenn Du Deine Container über synoip:container-port ansprichst?

Container in einem Compose-Verbund sollten untereinander IMMER nur mit dem Netzwerk-Alias miteinander kommunizieren. Man verwendet da keine fest verdrahteten IP-Adressen. Die Aliasse werden dann über den "Docker-DNS Server" des jeweiligen (Bridged)Netzwerks in IP's aufgelöst.Loose Container sollten untereinander IMMER über Hostname/IP und den gemappten Host-Port miteinander kommunizieren.
 

OleDeluxe

Benutzer
Mitglied seit
02. Jul 2018
Beiträge
8
Punkte für Reaktionen
0
Punkte
1
Hallo,

ich betreibe ein paar Container mit macvlan. Das funktioniert auch soweit, nur bekommen die Container ja die IP in der Reihenfolge zugewiesen, wie sie gestartet werden.

Wenn ich einen Container über die Konsole starte kann ich ihm ja auch eine IP aus dem im macvlan festgelegten Bereich direkt mitgeben:
Rich (BBCode):
docker  run --net=mac0 --ip=172.16.86.10 ...
Ich bin jetzt nicht so fit auf dem Gebiet, daher nun meine Frage, ob ich den Befehl "--ip=......" nicht in der entsprechenden config .json des Docker-Containers eintragen kann und diese dann wieder importieren?
Der betreffende Export eines json files sieht ja so aus.
Rich (BBCode):
...
   "network" : [
      {
         "driver" : "macvlan",
         "name" : "mac0"
      }
   ],
   "network_mode" : "mac0",
   "port_bindings" : [],
   "privileged" : false,
   "shortcut" : {
      "enable_shortcut" : false
   },
   "ulimits" : null,
   "use_host_network" : false,
...

kann man da irgendwie die IP "reinbasteln" ?
 

OleDeluxe

Benutzer
Mitglied seit
02. Jul 2018
Beiträge
8
Punkte für Reaktionen
0
Punkte
1
Hi,
gute Idee, daran hatte ich gar nicht gedacht.
Habe nun testweise mal einen identischen Container auf die verschiedensten Weisen gestartet, leider ist aber das Exportierte Config File der DS immer identisch.

Das ist schade. Hat noch jemand eine Idee wie man das entsprechend umsetzten könnte? Ich benötige beim Start eine Festlegung der ip und des hostname.

Gruß Sven
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.468
Punkte für Reaktionen
356
Punkte
103
Wenn es schon nicht als Teil der Config nach einem Export vorhanden ist, dann stehen die Chance nicht gut, dass die Information importiert werden kann.

Ich würde mir eine docker-compose.yml bauen und dann entsprechende task anlegen:
- bei start: als admin 'docker-compose -f /pfad/zur/docker-compose.yml up -d' ausführen
- beim herunterfahren: als admin 'docker-compose -f /pfad/zur/docker-compose.yml stop' ausführen.

In der compose-Datei muss dann entsprechend das Netzwerk angegeben werden und die IP für die Container verdrahtet werden.
 

immoteb

Benutzer
Mitglied seit
08. Mai 2013
Beiträge
89
Punkte für Reaktionen
0
Punkte
0
Um die Sache mal von meiner Seite zu einem Abschluß zu führen: es hat so funktioniert, wie angekündigt. Manuell anlegen und dann per Web administrieren.
 
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