2014-12-02 183 views
3

我在Windows 7(SP1)64位機器上使用最新版本的boot2docker版本1.3.2,495c19a。如何將在boot2docker中運行的Docker容器連接到在另一主機上運行的網絡服務?

我的docker容器正在運行一個celery進程,它試圖連接到運行boot2docker的同一臺機器上運行的rabbitMQ服務。

的搬運工容器中運行的芹菜過程不能連接到的RabbitMQ和報告如下:

[2014年12月2日10:28:41141:ERROR/MainProcess]消費者:不能連接到 AMQP :// guest:** @ 127.0.0.1:5672//:[Errno 111]拒絕連接。 2.00秒後重試

我有理由相信這是一個網絡相關的問題,從容器路由表,到VirtualBox主機相關聯,並從主機到RabbitMQ的服務上運行本地機器;我不知道如何配置這個,我想知道是否有人可以告訴我如何繼續?我試圖在端口轉發中設置端口5672,但它不起作用(但我相信這是針對VM的傳入流量,如boot2docker ssh)。

我運行的容器,搬運工運行-i -t標記名

我不指定與-h主機,當我運行的容器。

對不起,如果這個問題顯得相當無知,或者如果答案顯而易見...我感謝任何幫助!


一些額外的信息:

主機的路由表VM在安裝過程中配置了什麼boot2docker如下:

enter image description here

  • docker0 IP地址爲172.17.42.1

  • e TH0的IP地址是10.0.2.15

  • ETH1的IP地址是192.168.59.103

  • eth0已經在VirtualBox的VM的網絡配置連接到NAT(適配器1)。

  • 適配器1具有用於ssh的端口轉發設置;默認設置爲主機IP 127.0.0.1,主機端口2022,訪客端口22.

  • eth1連接到僅主機適配器(適配器2)。

  • 兩個適配器都設置爲混雜模式(允許全部)。

  • 泊塢窗容器的IP地址是172.17.0.33。

+0

兔子是Windows主機或運行在VirtualBox Linux guest上? – Bryan 2014-12-02 12:03:32

+0

RabbitMQ服務正在Windows主機上運行。 – d3monster 2014-12-03 00:47:54

回答

2

[2014年12月2日10:28:41141:ERROR/MainProcess]消費者:不能連接到AMQP://來賓:** @ 127.0.0.1:5672//:[錯誤111 ] 拒絕連接。在2.00秒內再試...

127.0.0.1是一個特殊的IP地址,意思是「我」外部主機。因此,首先要做的就是將您嘗試連接到Rabbit的IP地址更改爲它所在的外部主機的IP地址。

然後你可能不得不做一些關於路由的工作,但是我們一次只做一步。

+0

謝謝布賴恩,你的建議是解決我的問題。我設置了芹菜連接到運行RabbitMQ服務的Windows主機的IP地址的IP地址。它正在工作,我很高興你能幫助我快速起牀和跑步!我想知道是否有什麼我可以用VirtualBox網絡做的事情來將流量從容器中運行的芹菜路由到虛擬機虛擬機,然後到Windows主機,而不是直接爲芹菜設置windows主機IP。 – d3monster 2014-12-03 11:43:54

+0

不太確定「不設置windows主機IP」 - 如果這是兔子運行的地方,那麼這就是你需要使用的IP地址。然而,關於路由的信息,我發現這篇文章相當有用:http://ispyker.blogspot.co.uk/2014/04/accessing-docker-container-private.html - 它是爲OSX編寫的,但大部分的VirtualBox配置將在PC上非常相似。 – Bryan 2014-12-03 12:13:02

0

您必須爲boot2docker和docker分別明確指定端口重定向的端口。

請試試這個:

c:\>boot2docker init 
c:\>boot2docker up 
c:\>boot2docker ssh -L 0.0.0.0:5672:localhost:5672 
[email protected]:~$ docker run -it -p 5672:5672 tagname 
+0

嗨魔杖,謝謝你的迴應! 不幸的是,由於RabbitMQ服務正在使用該端口,因此無效。報告以下錯誤: bind:Not owner channel_setup_fwd_listener:無法偵聽端口:5672 無法請求本地轉發。 如果我停止rabbitMQ服務,那麼端口綁定報告沒有錯誤。 – d3monster 2014-12-03 00:46:43

2

爲您的RabbitMQ服務器的Windows主機上運行,​​你需要告訴你的容器,它應該跟那個IP - 這很可能是192.168.59.3

最重要的是,您的容器的127.0.0.1只是該容器服務的環回設備 - 甚至不包括boot2docker虛擬機的端口。

可能設置有--expose=80,並使用類似socat從該容器中的所有流量轉發到你的主機大使容器(見svendowideit /大使)。那麼你--link該大使容器到當前的圖像

,但就個人而言,我會避免,最初,只是配置您的集裝箱應用交談的真實主機的IP

+0

謝謝Bryan和SvenDowideit, – d3monster 2014-12-03 11:30:19

相關問題