Docker Mac Beta和容器连接到主机端口?

时间:2016-07-20 16:26:59

标签: python macos intellij-idea docker docker-compose

我目前使用PyCharm(实际上是IntelliJ)并且一直在使用Kitematic和VirtualBox支持。

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

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

有人有什么想法吗?

我需要一些魔法酱才能让python调试器监听所有IP /端口吗?

编辑:

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

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

这是在容器内部。我在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

这一切都适用于旧的基于虚拟机的Docker设置,这是有道理的,因为它使用完整的虚拟机。但不确定新的Docker Beta是如何工作的,特别是在网络方面。

我正在使用Docker-Compose,因此我可以通过网络配置选项设置网络,但到目前为止,我还没有随机尝试工作。

此外,该容器还可以访问任何其他内容(google.com或其他),而不是主机上的特定端口。

2 个答案:

答案 0 :(得分:0)

我认为问题是您需要公开端口15001。

尝试添加到Dockerfile

EXPOSE 15001

答案 1 :(得分:0)

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