Docker EXPOSE порт только для хоста


100

Докер может открывать порт только для хоста, а не для внешнего мира.

Мне нужно запустить докер с базой данных mongo, и я хотел, чтобы он был доступен только с хоста, но мне нужно связать порт хоста 27017.

Возможно ли это, или единственно возможный способ - изменить определения брандмауэра?

Ответы:


142

Конечно, просто привяжите его localhost, например:

docker run -p 127.0.0.1:27017:27017

Также: ваш хост также может нормально общаться с каждым контейнером через свой IP-адрес. Используется docker inspect $IDдля получения дампа json (помимо прочего), содержащего сетевой IP.


4
Это что-то вроде [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 ...?
Рубен

17
Второй вариант привязывается к localhost, да. Первый делает порт общедоступным. Если вам не нужен статический порт, используйте 127.0.0.1::27017.
ZeissS 01

3
Это решение, похоже, не работает в режиме роя, см. Эту проблему с github
bsimpson53

1
эквивалентный docker-compose просто service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }?
Groostav 02

1
В чем проблема в моем docker-compose, хотя он привязан только к localhost, но он общедоступен. stackoverflow.com/questions/50621936/…
Тара Прасад Гурунг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.