Соединение отклонено при попытке подключиться к http-серверу в контейнере демона докеров

Я использую boot2docker. Я запускаю один образ в режиме демона, который запускает сервер grunt на порту 3000. Это команда, которую я использовал для его запуска.

Этот образ уже открыл порт 3000.

docker run -d -P --name dummy image_name grunt server
docker ps
3af4ba19c539        image_name:latest   "grunt server"      54 minutes ago      Up 54 minutes       0.0.0.0:45000->3000/tcp   dummy

а потом запустить в тот же контейнер, чтобы "завить" веб-сервер.

docker exec -it 3af4ba19c539 /bin/bash 
curl localhost:3000 

Он получает HTML-код.

Однако, когда я пытаюсь подключить его к своему компьютеру Mac. Пишет "Соединение отклонено".

curl $(boot2docker ip):45000
//curl: (7) Failed connect to 192.168.59.103:45000; Connection refused

Я пытаюсь решить эту проблему с помощью VBoxManage, но он тоже не работает.

VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port45000,tcp,,45000,,45000"

Могу ли я узнать, как решить эту проблему. Спасибо заранее


person Xiaohe Dong    schedule 24.05.2015    source источник
comment
Был ли контейнер запущен, когда вы выполнили модификацию vm? Потому что если бы это было так, то требовалось бы управление vm: см. stackoverflow.com/a/29998490/6309.   -  person VonC    schedule 24.05.2015
comment
Войдите в контейнер и опубликуйте вывод netstat -ant   -  person Daniel t.    schedule 24.05.2015


Ответы (1)


Мне нужно увидеть источник вашего приложения, чтобы быть уверенным, но я готов поспорить, что вы привязаны к локальному интерфейсу обратной связи (127.0.0.1 или localhost) в своем приложении. Если вы вместо этого привяжетесь к 0.0.0.0 для прослушивания всех интерфейсов, вы обнаружите, что он доступен извне.

person Adrian Mouat    schedule 24.05.2015