2016-10-19 2 views
2

Я бегу Docker контейнер с помощью следующей команды:мост докер контейнерный порт для размещения порта

docker run -d --name frontend_service -net host --publish=3001:3000 frontend_service 

Как я понимаю, он отображает локальный порт 3001 на контейнерный порт 3000. я уже SSH в контейнер и проверенный локон localhost: 3000. Работает. Но снаружи, на хосте, я не могу ломать localhost: 3001.

Я проверил nmap. Порт открыт:

nmap -v -sT localhost 

Starting Nmap 6.47 (http://nmap.org) at 2016-10-19 01:24 UTC 
Initiating Connect Scan at 01:24 
Scanning localhost (127.0.0.1) [1000 ports] 
Discovered open port 25/tcp on 127.0.0.1 
Discovered open port 22/tcp on 127.0.0.1 
Discovered open port 5051/tcp on 127.0.0.1 
Discovered open port 3001/tcp on 127.0.0.1 
Completed Connect Scan at 01:24, 0.06s elapsed (1000 total ports) 
Nmap scan report for localhost (127.0.0.1) 
Host is up (0.0011s latency). 
Other addresses for localhost (not scanned): 127.0.0.1 
Not shown: 996 closed ports 
PORT  STATE SERVICE 
22/tcp open ssh 
25/tcp open smtp 
3001/tcp open nessus 
5051/tcp open ida-agent 

Как подключить порт контейнера к порту моего хоста?

+2

Внутри контейнера, на каком адресе, если ваш сервис прослушивает? Возможно, он связан только с адресом localhost (например, 127.0.0.1)? Это предотвратит любые внешние подключения, независимо от того, что вы делаете с докером. – larsks

+0

Спасибо, @larks. Это была одна из проблем. –

ответ

5

Когда вы укажете --net=host, вы полностью отключите шаги настройки сети Docker. Контейнер не получит свое собственное пространство имен в сети, не получит свои собственные интерфейсы, и системе публикации порта не будет ничего, на что можно было бы перейти.

Если вы хотите, чтобы ваш -p 3001:3000 работал, не используйте --net=host.

Смежные вопросы