Docker机器/ Docker链接在Digital Ocean上返回不同的容器IP

时间:2015-06-15 04:48:12

标签: node.js docker digital-ocean docker-machine

我使用Docker机器在DigitalOcean上创建了一个Droplet。

当运行两个容器并以这种方式从Jenkins链接时:

/bin/bash/eval "$(docker-machine env deployment)"
/bin/bash -c "docker run -d -t --name container1 -p 5000:5000 image1"
/bin/bash -c "docker run -d -t --name container2 -p 5001:5001 --link container1:container1 image2"

然后docker inspect container1 | grep "IPAddress"我得到172.17.0.51。 但是当我在container2中运行Node.js应用程序时,它调用process.env.CONTAINER1_PORT_5000_TCP_ADDR解析为 172.17.0.7:5000当我从其公共IP(DO droplet)调用container2时导致返回No route to host

当我exec进入container2并运行node process.env.CONTAINER1_PORT_5000_TCP_ADDR时,它会返回172.17.0.51

如果我使用其他用户访问主机,docker inspect container2 | grep "IPAddress"也会返回172.17.0.52而不是172.17.0.51

为什么Node.js应用程序返回错误的IP地址,而在命令行上运行Node.js会返回不同且正确的IP地址?

更新: 如果我在没有docker-machine和DO的Jenkins机器上本地运行容器,一切正常。

0 个答案:

没有答案