2014-12-02 151 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

相关问题