Docker EXPOSE einen Port nur für Host

99

Ist Docker in der Lage, einen Port nur dem Host und nicht der Außenseite auszusetzen?

Ich muss ein Docker einrichten, das mit einer Mongo-Datenbank ausgeführt wird, und ich wollte, dass es nur vom Host aus zugänglich ist, aber ich muss den Host-Port 27017 verknüpfen.

Ist dies möglich oder besteht die einzige Möglichkeit darin, die Firewall-Definitionen zu ändern?

Ruben
quelle

Antworten:

140

Sicher, binde es einfach localhostso fest:

Docker-Run -p 127.0.0.1:27017:27017

Außerdem: Ihr Host kann mit jedem Container normalerweise über seine IP-Adresse kommunizieren. Verwenden Sie docker inspect $IDdiese Option, um einen JSON-Speicherauszug (neben anderen Elementen) abzurufen, der die Netzwerk-IP enthält.

ZeissS
quelle
4
Also ist es so etwas wie [1] Docker-Lauf -p 27017: 27017 -v / var / lib / mongodb / master: / data mongo: Speichertest / usr / bin / start-mongo [2] Docker-Lauf -p 127.0.0.1: 27017: 27017 ...?
Ruben
17
Die zweite Option ist an localhost gebunden, ja. Der erste macht den Hafen öffentlich zugänglich. Wenn Sie keinen statischen Port möchten, verwenden Sie 127.0.0.1::27017.
ZeissS
3
Diese Lösung scheint nicht für den Schwarmmodus zu funktionieren, siehe dieses Github-Problem
bsimpson53
1
ist das äquivalente Docker-Compose einfach service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }?
Groostav
1
Was ist das Problem in meinem Docker-Compose, obwohl nur an localhost gebunden, aber es ist öffentlich zugänglich. stackoverflow.com/questions/50621936/…
Tara Prasad Gurung