it-swarm.com.de

Wie kann ich die IP-Adresse und den Port des Docker-Containers für einen externen Docker-Host freigeben, ohne dass eine Portzuordnung erforderlich ist?

Als ich zwei Docker-Container für dasselbe Web-Image auf einem Docker-Host gestartet habe.

  • zwei Docker-Container haben denselben Port abgehört 5000
  • port 5000 der beiden Container wurde unterschiedlichen Ports des Docker-Hosts zugeordnet: 49155, 49156
  • um von außerhalb des Docker-Hosts auf die beiden Container zuzugreifen, müssen Sie auf die Docker-Host-IP und den Port 49155 oder 49156 zugreifen.

Gibt es eine Lösung für den Zugriff auf einen Docker-Container von außerhalb des Docker-Hosts über dessen IP und Port x.x.x.x:5000 Ohne Portzuordnung?

Alle Docker-Container auf verschiedenen Dock-Hosts können direkt aufeinander zugreifen.

44
kino lucky

Sie können dies mit IP-Aliasing auf dem Host erreichen.

Fügen Sie zunächst eine virtuelle Schnittstelle auf dem Host hinzu, die eine andere IP-Adresse als die primäre Schnittstelle hat. Wir werden die primäre Schnittstelle aufrufen eth0 mit IP 10.0.0.10 und die virtuelle Schnittstelle eth0:1 mit IP-Adresse 10.0.0.11.

 ifconfig eth0:1 10.0.0.11 netmask 255.255.255.0 up 

Führen Sie nun die Container aus und ordnen Sie Port 5000 der entsprechenden Schnittstelle zu. Beispielsweise:

docker run -p 10.0.0.10:5000:5000 -name container1 <someimage> <somecommand>
docker run -p 10.0.0.11:5000:5000 -name container2 <someimage> <somecommand>

Jetzt können Sie über verschiedene externe IP-Adressen auf jeden Container auf Port 5000 zugreifen.

63
Ben Whaley