Docker EXPOSE un port uniquement vers l'hôte

99

Le docker est-il capable d'exposer un port uniquement à l'hôte et non à l'extérieur.

J'ai besoin de mettre un docker en cours d'exécution avec une base de données mongo, et je voulais qu'il ne soit accessible qu'à partir de l'hôte, mais je dois relier le port d'hôte 27017.

Est-ce possible ou est-ce que le seul moyen possible est de modifier les définitions de pare-feu?

Ruben
la source

Réponses:

141

Bien sûr, liez-le simplement localhost, comme ceci:

docker exécuter -p 127.0.0.1:27017:27017

Aussi: votre hôte peut également parler à chaque conteneur normalement sur son IP. Utilisez docker inspect $IDpour obtenir un vidage json (à côté d'autres éléments) contenant l'adresse IP du réseau.

ZeissS
la source
4
Est-ce quelque chose comme [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 deuxième option se lie à localhost, oui. Le premier rend le port accessible au public. Si vous ne voulez pas de port statique, utilisez 127.0.0.1::27017.
ZeissS
3
Cette solution ne pas apparaître au travail pour former des essaims voir cette question github
bsimpson53
1
est l'équivalent docker-compose simplement service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }?
Groostav
1
Quel est le problème dans mon docker-compose bien que lié à localhost uniquement mais il est accessible au public. stackoverflow.com/questions/50621936/…
Tara Prasad Gurung