Node.js Docker machine/Docker link返回数字海洋上的不同容器IP

Node.js Docker machine/Docker link返回数字海洋上的不同容器IP,node.js,docker,digital-ocean,docker-machine,Node.js,Docker,Digital Ocean,Docker Machine,我用Docker机器在DigitalOcean上创建了一个水滴 运行两个容器并从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 co

我用Docker机器在DigitalOcean上创建了一个水滴

运行两个容器并从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"
然后码头工人检查集装箱1 | grep“IPAddress”我得到了
172.17.0.51
。 但是,当我在container2中运行Node.js应用程序时,它调用
process.env.CONTAINER1\u PORT\u 5000\u TCP\u ADDR
,它解析为
172.17.0.7:5000
当我从container2的公共IP(DO液滴的)调用container2时,导致返回到主机的
无路由

当我
exec
进入container2并运行
节点进程.env.CONTAINER1\u PORT\u 5000\u TCP\u ADDR
时,它返回
172.17.0.51

如果我使用另一个用户ssh进入主机,
docker inspect container2 | grep“IPAddress”
也会返回
172.17.0.52
,而不是
172.17.0.51

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

更新:
如果我在Jenkins机器上本地运行容器,而不使用docker机器,则一切正常。

我认为您需要检查您的问题陈述,并确保您正在检查正确的端口。我了解到目前为止:集装箱2的IP
172.17.0.51
;集装箱1是
172.17.0.7
;现在,你能解释一下“当我从conatiner2的公共IP(DO droplet的)调用它时”——你是如何调用它的,从哪里调用它的也;您是否完全确定此语句:当我执行container2时,CONTAINER1\u PORT\u 5000\u TCP\u ADDR返回172.17.0.51?我修复了该语句。如果从控制台运行
节点进程.env.Container1\u PORT\u 5000\u TCP\u ADD,则Container1的IP
172.17.0.51
。如果我从尝试访问container1的公共IP调用container2中的Node.js应用程序,它将返回container1的
172.17.0.7
,而不是
172.17.0.51
。不幸的是,如果没有实际图像,我们都可以在问题陈述中运行并确认问题,“发生了什么”的答案只能推测。您可以在此处找到这两个图像:。customerui是container2,customerservice是container1