我在 Windows 7 (SP1) 64 位机器上使用最新版本的 boot2docker 版本 1.3.2、495c19a。
我的 docker 容器正在运行一个 celery 进程,它试图连接到 rabbitMQ 服务,该服务在运行 boot2docker 的同一台机器上运行。
在 docker 容器中运行的 Celery 进程无法连接到 RabbitMQ 并报告以下内容:
[2014-12-02 10:28:41,141: ERROR/MainProcess] consumer: Cannot connect to amqp:// guest:**@127.0.0.1:5672//: [Errno 111] Connection refused. Trying again in 2.00 seconds...
我有理由相信这是一个与网络相关的问题,与从容器到 VirtualBox 主机以及从主机到本地计算机上运行的 RabbitMQ 服务的路由有关;我不知道如何配置它,我想知道是否有人可以建议我如何进行?
我尝试在端口转发中设置端口 5672,但它不起作用(但我相信这是针对 VM 的传入流量,例如 boot2docker ssh)。
我正在运行容器作为 docker run -i -t tagname
我在运行容器时没有使用 -h 指定主机。
如果这个问题看起来毫 headless 绪或者答案看起来很明显,我很抱歉......非常感谢您的帮助!
一些附加信息:
host 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 连接到 Host-only 适配器(适配器 2)。
两个适配器都设置为混杂模式(允许所有)。
docker 容器的 IP 地址是 172.17.0.33。
最佳答案
[2014-12-02 10:28:41,141: ERROR/MainProcess] consumer: Cannot connect to amqp:// guest:**@127.0.0.1:5672//: [Errno 111] Connection refused. Trying again in 2.00 seconds...
127.0.0.1 是一个特殊的 IP 地址,意思是“我”,在容器内部它的意思是“我这个容器”,所以这就是它不连接到外部主机的原因。因此,首先要做的是将您尝试连接到 Rabbit 的 IP 地址更改为运行它的外部主机的 IP 地址。
然后您可能必须对路由做一些事情,但让我们一次一个步骤。
关于networking - 如何将在 boot2docker 中运行的 Docker 容器连接到在另一台主机上运行的网络服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27248520/