2016-07-20 77 views
0

我目前使用PyCharm(实际上是IntelliJ),并且一直在使用VirtualBox支持的Kitematic。Docker Mac Beta和容器连接到主机端口?

我有一个容器连接到主机(这是一个虚拟机)进行远程调试。

问题是当我尝试使用Docker Mac Beta时,容器似乎无法访问主机上的任何特定端口,但它可以ping主机。这没有任何意义...

任何人有任何想法?

是否有一些魔法酱,我需要使python调试器监听所有的IP /端口?

编辑:

为了澄清,在此环境中运行一个python脚本时,脚本必须启动出站连接到指定的IP /端口。

这里有一些控制台输出帮助理解:

这是在容器本身。我的调试器在Mac上的端口15001上运行。

# /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 
# 

,然后在主机(我的MAC):

➜ 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

EXPOSE 15001

0

创建一个基于主机的回环设备,然后使用远程主机的替代(如在xdebug中)配置你的容器连接到该主机(在端口上),这将解决你的问题,因为它为PHP(同样的问题)。从dockertoolbox切换到docker for mac时,我们遇到了同样的情况。请参阅配置示例,其中包括launchdaemon以在此处创建主机回送接口:https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c

相关问题