2014-12-12 7 views
0

Я пытаюсь подключить скрипт на хосте Docker к сценарию в контейнере Docker.Проблема подключения к контейнеру Docker

Сценарии используют удаленный диспетчер очереди Python, и они отлично работают вне Docker, поэтому я уверен, что проблема связана с моей конфигурацией Docker или с моим пониманием пересылки портов Docker.

Сценарий на контейнере правильно связывается с (localhost, 5800), и я проверил, что скрипт не сбой.

Я попытался подключить сценарий к IP-адресу контейнера на порту 5800, и это не работает (соединение отклонено). Я также попытался использовать флаг -p и переадресацию 5800 на случайный порт, а затем подключиться к (localhost, randomport) с хоста Docker, и это тоже не работает (соединение отклонено).

Снова скрипт определенно работает, так как проблема возникает, даже когда я получаю оболочку на контейнере и запускаю скрипт вручную, гарантируя, что он успешно запускает сервер и не закрывает его.

Для меня это похоже на ту же проблему, что и работа с веб-сервером в контейнере Docker. Почему это не работает? Скрипты работают за пределами Docker просто отлично.

https://github.com/hashme/thistle/tree/flask_thistle 

(см room.py для контейнера сценария и app.py для хоста сценария, я не бегу сценарии точно, но рубил в REPL, так что я регулировать многие параметры без успеха)

Чтобы воспроизвести проблему, сначала запустите ./container.sh, затем (в REPL) импортируйте приложение и создайте MessagePasser с некоторым IP-адресом и номером порта. Запуск сценария app.py ничего не делает.

ответ

1

Сценарий на контейнере правильно связывается с (локальный, 5800)

Вы должны убедиться, что внутри контейнера скрипт связывается с «0.0.0.0» (все интерфейсы) адрес, не localhost (loopback). В противном случае он не сможет принимать внешние соединения.

+0

Ах! Это моя первая ошибка. Позвольте мне понять, исправляет ли это это. – Shariq

+0

Это не полностью устранило мою проблему: я все равно получаю сообщение «Connection failed» с правильной привязкой скрипта к («0.0.0.0», 5800) при попытке подключиться к нему с хоста Docker, используя как его IP, так и localhost с правильным портом. Любые другие идеи? – Shariq

+0

Затем проверьте, правильно ли вы показываете и публикуете этот порт. Тем не менее, этот вид удаленного устранения неполадок с помощью stackoverflow является утомительным. Вы должны сделать что-то вроде 20 вещей совершенно правильно или вообще не работает, и у нас нет доступа к вашей системе, чтобы проверять вещи удаленно, поэтому это не так хорошо работает в stackoverflow. –

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