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?

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.