2016-07-20 30 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

相關問題