Docker EXPOR uma porta apenas para o host

99

O docker é capaz de expor uma porta apenas para o host e não para o exterior.

Eu preciso colocar um docker rodando com um banco de dados mongo, e eu queria que ele só pudesse ser acessado pelo host, mas preciso vincular a porta 27017 do host.

Isso é possível ou a única maneira possível é alterar as definições do firewall?

Ruben
fonte

Respostas:

140

Claro, basta vinculá-lo a localhost, assim:

docker run -p 127.0.0.1:27017:27017

Além disso: seu host também pode se comunicar com cada contêiner normalmente por meio de seu IP. Use docker inspect $IDpara obter um dump json (além de outras coisas) contendo o IP da rede.

ZeissS
fonte
4
Então, é algo como [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
A segunda opção se liga ao localhost, sim. O primeiro torna a porta disponível publicamente. Se você não quiser uma porta estática, use 127.0.0.1::27017.
ZeissS
3
Esta solução parece não funcionar para o modo enxame, veja este problema no github
bsimpson53
1
é o equivalente docker-compose simplesmente service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }?
Groostav
1
Qual é o problema no meu docker-compose embora vincule ao localhost apenas, mas é acessível publicamente. stackoverflow.com/questions/50621936/…
Tara Prasad Gurung