Forum: PC Hard- und Software docker-compose mapping internal ports


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Stefan H. (Firma: dm2sh) (stefan_helmert)


Bewertung
-1 lesenswert
nicht lesenswert
Hallo,

ich möchte bei docker-compose den internen Port 8080 eines Containers 
nicht auf den externen Port 80 des Hosts mappen, sondern auf den Port 80 
des internen named Network.

Wie kann ich nun dieses interne Mapping umsetzen?

Also das geht nicht:
  webservice:
    build: "myservice"
    networks:
      - frontend
    ports:
      - 8080:80

weil hier der interne Port 8080 von "myservice" auf den Host Port 80 
gemapped wird. Der soll aber von Port 8080 von "myservice" auf das 
Netzwerk "frontend" Port 80 gemapped werden.

von DockerDoc (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan H. schrieb:
> ich möchte bei docker-compose den internen Port 8080 eines Containers
> nicht auf den externen Port 80 des Hosts mappen, sondern auf den Port 80
> des internen named Network.

Das geht nicht von "außerhalb", das muss der Container intern selber 
machen.
Dein docker-compose Netzwerk ist am Ende eine Bridge, jeder Container 
hängt da mit seinem eigenen veth-Pärchen dran.
mit den "ports"-Angaben im compose-file erzeugst du Port-Weiterleitungen 
vom Host auf die Bridge.

Lösungsansätze (ohne Anspruch auf Vollständigkeit)

1) im "msyservice/Dockerfile" direkt auf Port 80 Umkonfiguriern 
(Allerdings: Sicherheitsrelevant, der Prozess im Container braucht dann 
zumindest bei Startup root)

2) Configfile im myservice von aussen (volume mount) austauschen auf 
port 80. (auch wieder root im container benötigt)

3) myservice mit CAP_(NET?)ADMIN starten, im Startup-File von myservice 
ein Portforwarding einrichten (iptables -t nat -I ...., auch 
sicherheitsrelevant)

4) minimalen Zusatz-Container dazusetzen, der nur eine "webservice:8080 
-> portchanger:80" Umsetzung macht. wieder per iptables, oder per 
reverse-proxy.

5) andere Container in deinem compose-file konfigurieren, dass sie auf 
webservice:8080 zugreifen.



Aus Sicherheitsaspekten ist (5) am besten, (4) mit iptables auch 
durchaus OK, weil in 4 nach dem Setup der Container nur noch ein "sleep 
forever" ausführen muss, d.H. kaum Angriffsfläche.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.