Docker WYKAZUJ port tylko do hosta

100

Czy docker może wystawiać port tylko na hosta, a nie na zewnątrz.

Muszę uruchomić docker z bazą danych mongo i chciałem, aby był dostępny tylko z hosta, ale muszę połączyć port hosta 27017.

Czy to możliwe, czy jedynym możliwym sposobem jest zmiana definicji zapory?

Ruben
źródło

Odpowiedzi:

142

Jasne, po prostu zwiąż to z localhost, na przykład:

docker run -p 127.0.0.1:27017:27017

Ponadto: Twój host może również normalnie rozmawiać z każdym kontenerem przez jego adres IP. Służy docker inspect $IDdo uzyskania zrzutu json (oprócz innych rzeczy) zawierającego IP sieci.

ZeissS
źródło
4
Czy jest to coś w rodzaju [1] docker run -p 27017: 27017 -v / var / lib / mongodb / master: / data mongo: storage_test / usr / bin / start-mongo [2] docker run -p 127.0.0.1: 27017: 27017 ...?
Ruben
17
Druga opcja wiąże się z localhost, tak. Pierwsza z nich udostępnia publicznie port. Jeśli nie chcesz portu statycznego, użyj 127.0.0.1::27017.
ZeissS
3
To rozwiązanie ma nie wydaje się pracy dla trybu roju zobaczyć ten GitHub problem
bsimpson53
1
czy odpowiednik docker-compose jest po prostu service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }?
Groostav
1
Jaki jest problem w moim docker-compose, chociaż powiąż tylko z lokalnym hostem, ale jest publicznie dostępny. stackoverflow.com/questions/50621936/…
Tara Prasad Gurung