2017-01-25 23 views
0

問題:網絡沒有路由到主機。在主機上或docker.local 8080:8080或類似的東西 例如爲:如何在Mac上調試Docker安裝程序的網絡 - 可能是Hyperkit導致的問題?

docker run -tip 80:8080 httpd 

不會導致阿帕奇響應本地主機上。如果我嘗試從內部連接,容器工作正常:

docker run -ti debian  
curl 172.17.0.2 
<html><body><h1>It works!</h1></body></html> 

看來,在Docker方面本身就是一切都很好。 在docker ps你:... 80/tcp, 0.0.0.0:80->8080/tcp ...

環境:新的,乾淨的操作系統安裝 - OSX塞拉利昂10.12.2,Docker.app版本1.13.0穩定(加上1.13.0β和1.12.0測試嘗試,以及結果相同)。

假設: Docker和操作系統之間有些不同。我猜這個'東西'是Hyperkit(對我來說就像一個黑盒子)。可能會有一些設置由此處的構建腳本中斷:http://bigchaindb-examples.readthedocs.io/en/latest/install.html#the-docker-way這是以docker-machine爲中心,這實際上我可能低估了。有趣的事實是,這是一個新的安裝:這個構建腳本是我做過的第一件事 - 我不知道之前的網絡是否真正起作用。

問題:如何診斷這些東西。我希望能夠跟蹤流量在哪裏丟失並據此進行修復。

回答

1

你的命令行的端口逆轉:

docker run -tip 8080:80 httpd 

,首先是主機端口,一個可選的接口綁定,其次是集裝箱港口。您還可以看到,在docker ps輸出中,主機上的端口80映射到容器內的端口8080。

另一個問題是容器內的服務需要監聽所有容器接口(0.0.0.0),而不是容器的本地主機接口,否則代理不能將流量轉發給它。然而,官方圖片的默認設置不會有這個問題,你的curl命令顯示不適用於你。

+0

你是對的,我令人難以置信的不留神。謝謝! – nanoook