[英]How do I connect a Docker container running in boot2docker to a network service running on another host?
我在Windows 7(SP1)64位计算机上使用最新版本的boot2docker版本1.3.2,495c19a。
我的docker容器正在运行一个celery进程,它尝试连接到运行boot2docker的同一台机器上运行的rabbitMQ服务。
在docker容器中运行的Celery进程无法连接到RabbitMQ并报告以下内容:
[2014-12-02 10:28:41,141:ERROR / MainProcess] consumer:无法连接到amqp:// guest:** @ 127.0.0.1:5672//:[Errno 111]连接被拒绝。 在2.00秒内再次尝试......
我有理由相信这是一个与网络相关的问题,与从容器,VirtualBox主机以及从主机到本地机器上运行的RabbitMQ服务的路由相关联; 我不知道如何配置这个,我想知道是否有人可以建议我如何进行?
我尝试在端口转发中设置端口5672,但它不起作用(但我相信这是针对VM的传入流量,如boot2docker ssh)。
我正在运行容器作为docker run -i -t标记名
我在运行容器时没有使用-h指定主机。
对不起,如果这个问题显得很无能,或者答案看起来很明显......我感谢任何帮助!
一些其他信息:
主机VM的路由表是安装期间配置的boot2docker,如下所示:
docker0 IP地址是172.17.42.1
eth0 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)。
两个适配器都设置为混杂模式(允许所有)。
docker容器的IP地址是172.17.0.33。
[2014-12-02 10:28:41,141:ERROR / MainProcess] consumer:无法连接到amqp:// guest:** @ 127.0.0.1:5672//:[Errno 111]连接被拒绝。 在2.00秒内再次尝试......
127.0.0.1是一个特殊的IP地址,意思是“我”,而容器里面的意思是“我的容器”,所以这就是它没有连接到外部主机的原因。 因此,首先要做的是将尝试连接到Rabbit的IP地址更改为运行它的外部主机的IP地址。
那么你可能不得不做一些关于路由的事情,但让我们一步一步。
当您的RabbitMQ服务器在Windows主机上运行时,您需要告诉容器它应该与该IP通信 - 这可能是192.168.59.3
最重要的是,容器的127.0.0.1
只是该容器服务的环回设备 - 甚至不是boot2docker vm的端口。
您可以设置一个大使容器,该容器具有--expose=80
并使用诸如socat之类的东西将所有流量从该容器转发到您的主机(请参阅svendowideit / ambassador)。 然后你会--link
该大使容器到当前的图像
但就个人而言,我最初会避免这种情况,只需将您的容器化应用配置为与真实主机的IP通信即可
您必须为boot2docker和docker分别为端口重定向指定明确的端口。
请试试这个:
c:\>boot2docker init
c:\>boot2docker up
c:\>boot2docker ssh -L 0.0.0.0:5672:localhost:5672
docker@boot2docker:~$ docker run -it -p 5672:5672 tagname
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.