container feste IP

  • 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.

immoteb

Benutzer
Registriert
08. Mai 2013
Beiträge
90
Reaktionspunkte
1
Punkte
6
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?
 
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.
 
Das tue ich auch so und ist mE die saubere Lösung.
 
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?
 
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.
 
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.
 
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.
 
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" ?
 
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
 
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.
 
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