Docker ESPORRE una porta solo a Host


100

Docker è in grado di esporre una porta solo all'host e non all'esterno.

Devo mettere in esecuzione una finestra mobile con un database mongo e volevo che fosse accessibile solo dall'host, ma ho bisogno di collegare la porta host 27017.

È possibile o l'unico modo possibile è modificare le definizioni del firewall?

Risposte:


142

Certo, associalo a localhost, in questo modo:

docker run -p 127.0.0.1:27017:27017

Inoltre: il tuo host può anche parlare con ogni container normalmente tramite il suo IP. Utilizzare docker inspect $IDper ottenere un dump json (oltre ad altre cose) contenente l'IP di rete.


4
Quindi è qualcosa come [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
La seconda opzione si lega a localhost, sì. Il primo rende il porto pubblicamente disponibile. Se non vuoi una porta statica, usa 127.0.0.1::27017.
ZeissS

3
Questa soluzione non sembra funzionare per la modalità swarm vedi questo problema di GitHub
bsimpson53

1
è l'equivalente docker-compose semplicemente service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }?
Groostav

1
Qual è il problema nel mio docker-compose anche se si associa solo a localhost ma è accessibile pubblicamente. stackoverflow.com/questions/50621936/…
Tara Prasad Gurung
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.