2016-07-20 5 views
0

В настоящее время я использую PyCharm (на самом деле IntelliJ) и использовал Kitematic с поддержкой VirtualBox.Docker Mac Beta и контейнер, соединяющий порты хоста?

У меня есть контейнер, соединяющийся с хостом (который является виртуальной машиной) для удаленной отладки.

Проблема заключается в том, что когда я пытаюсь использовать Docker Mac Beta, контейнер, похоже, не может получить доступ к каким-либо конкретным портам на хосте, но он может пинговать хост. Что не имеет никакого смысла ...

У кого-нибудь есть идеи?

Есть ли какой-то волшебный соус Мне нужно, чтобы отладчик python мог прослушивать все IP-адреса/порты?

редактирует:

Чтобы уточнить, при запуске питон скрипт в этой среде, скрипт должен инициировать исходящий подключиться к указанному IP/порт.

Вот некоторые консольный вывод, чтобы помочь понять:

Это внутри самого контейнера. У меня есть отладчик, работающий на порту 15001 на моем Mac.

# /sbin/ip route|awk '/default/ { print $3 }' 
172.17.0.1 
# ping 172.17.0.1 
PING 172.17.0.1 (172.17.0.1): 56 data bytes 
64 bytes from 172.17.0.1: icmp_seq=0 ttl=64 time=0.078 ms 
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.066 ms 
^C--- 172.17.0.1 ping statistics --- 
2 packets transmitted, 2 packets received, 0% packet loss 
round-trip min/avg/max/stddev = 0.066/0.072/0.078/0.000 ms 
# telnet 172.17.0.1 15001 
Trying 172.17.0.1... 
telnet: Unable to connect to remote host: Connection refused 
# 

А потом на хозяина (мой макинтош):

➜ telnet localhost 15001 
Trying ::1... 
telnet: connect to address ::1: Connection refused 
Trying fe80::1... 
telnet: connect to address fe80::1: Connection refused 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
501 1 0.1 UNIX 

Это все работает отлично со старым VirtualBox на основе установки Докер, который имеет смысл, так как его с помощью полной оперять виртуальных машин. Но не знаете, как работает новая Docker Beta, особенно когда дело доходит до сетей.

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

Кроме того, контейнер может получить доступ ко всему остальному (google.com или что-то еще), а не к определенному порту на главной машине.

+0

Не должен ли хост пытаться получить доступ к портам на контейнере? Не наоборот? –

+0

Можете ли вы более подробно объяснить, что вы подразумеваете под «хостом (который является виртуальной машиной)»? В любом случае, когда у вас есть несколько слоев, подобных этому, вы хотите использовать определенный IP-адрес и убедитесь, что IP-адрес разделен/соединен с исходными и целевыми компьютерами. – ldg

ответ

0

Я думаю, что проблема в том, что вам нужно выставить порт 15001.

Попробуйте добавить к Dockerfile

ПОДВЕРГАТЬ 15001

0

Создание хоста на основе петлевого устройства, а затем использовать REMOTE_HOST альтернативу (например, в xdebug), чтобы настроить контейнер для подключения к этому хосту (на порту), это решит вашу проблему, как и для PHP (та же проблема). У нас был тот же случай при переключении с dockertoolbox на докер для mac. См. Пример конфигурации, включающий startdaemon для создания интерфейса loopback хоста здесь: https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c

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