Ist es möglich auf den Docker Container über die IP des Containers zuzugreifen und nicht über die Host IP?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Den docker run Befehl kannst du auch um einiges vereinfachen. Du musst nicht explizit ein Netzwerk und eine IP Adresse angeben. Bei beidem wird ein Wert automatisch zugewiesen.

Das wichtige, dass du benötigst, ist "docker run -p 3306:3306 container-name". Der Parameter "--name" ist für die Funktionalität unwichtig.

Mit dem "-p 3306:3306" Parameter hört die Docker Runtime auf der IP 0.0.0.0 mit 3306 und leitet alles den Datenbank Container auf Port 3306 weiter. Dabei ist es egal, welche IP Adresse du benutzt, um dein PC (nicht den Container) zu erreichen. Das kann lokal 127.0.0.1 oder im privaten Netzwerk die 192.168.x.x sein.

Meines Wissens ist es mit Docker nicht möglich ein Container als eigenständiges System mit eigener IP Adresse im Netzwerk zu veröffentlichen. Der gesamte Traffic wird immer über die/eine IP Adresse vom Host geleitet. Bei virtuellen Maschinen wäre es mit dem Bridged Netzwerkadapter möglich.

Du kannst den Publish Parameter (-p) noch etwas anpassen. Du kannst die lokale Bind Adresse vom Host anpassen. Mit "-p 127.0.0.1:3306:3306" könntest du die Datenbank dann nur per localhost bzw. 127.0.0.1 erreichen. Per 192.168.x.x im privaten Netzwerk wäre keine Kommunikation möglich. Mit der Option kannst du den Zugriff einschränken, aber nicht erweitern.

Die Container IP Adresse ist nur für das interne Docker Netzwerk relevant.

Du musst natürlich den entsprechenden Port (3306) im Router weiterleiten.

Und dann kannst du über deine externeIP:3306 darauf zugreifen.

Alternativ kannst du dir auch einen DynDNS zulegen, und dann mit dieser domain:3306 darauf zugreifen.

Oder du machst es mit einem Reverse-Proxy. Dann kann man den Port am Ende weglassen.

Fischkopf289 
Fragesteller
 03.05.2023, 15:15

ich verstehe das ganze ip zeugs nicht so ganz gut und deswegen weiss ich jetzt auch nicht welche die externeip sein soll

0
LuciusArtorius  03.05.2023, 15:17
@Fischkopf289

Ich habe deine Frage auch falsch verstanden. Du willst innerhalb des Netzwerks darauf zugreifen .... hab das überlesen und dachte, es ginge von außerhalb.

Warum genau soll es denn die Container-IP sein? Du greifst auch von einem anderem PC aus über die Host-IP:Port auf den Container zu.

0
Fischkopf289 
Fragesteller
 03.05.2023, 15:23
@LuciusArtorius

Aber ich meine ich muss schluessendlich 30 container oder so haben, alle mit mariadb drauf und dann bräuchte doch jeder ein anderer port wenn ich mit der hostIP zugreife nicht?

0

Ein Lösung könnte dies sein:

  • lege ein bridge device auf dem Host computer an
  • bridge die virtuellen interfaces der container und die physikalische NIC des hosts in dieser bridge
  • sorge dafür, falls nötig, dass pakete mit Destination virtuelle container interfaces mittels geeigneten Routen zum bridge device geroutet werden.

Die Vorgehensweise entspricht dem Konfigurieren eines gebridgten Netzwerkzugangs von VMs (im Konstrast zu geNATteden bzw geMASQeradeten Zugang eben dieser VMs), und du müsstest die gleichen Anleitungen dafür als Vorlage nehmen können.

Woher ich das weiß:Berufserfahrung – Ich weiß, wie man "Computer" buchstabiert.