Docker容器链接没有设置环境variables

在两个terminal会话中,我运行了以下docker容器:

docker run -i --name docker1 centos:centos6 /bin/bash

docker run -i --name docker2 centos:centos6 /bin/bash

docker ps产量:

8c67bb6975f7 centos:centos6 /bin/bash 7 minutes ago docker1

8c67bb6975f7 centos:centos6 /bin/bash 7 minutes ago docker2

(任何更好的方法来运行一个空的docker容器为testing目的btw?)

当我运行docker run -i --name link --link docker1:docker1 --link docker2:docker2 centos:centos6 /bin/bash和调用env我得到以下结果:

 DOCKER1_NAME=/docker1 HOSTNAME=b8403b72030d PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin PWD=/ SHLVL=1 HOME=/ DOCKER2_NAME=/docker2 

所以正如你所看到的,我只能得到容器的NAME ,而不是我真正想要的端口和IP。 我觉得我误解了一些东西,但是通过查看文档 ,我不知道它是什么。

幸运的是,我的一个好朋友(@tobiasgwaaler)比我更了解Docker,他慷慨地给了我答案。

为了docker集装箱共享其端口和IP,它需要EXPOSE的端口号。 因此,只需将其添加到我的Dockerfile

EXPOSE <port-number>

而且,这个港口和知识产权现在可以在env

 DOCKER1_PORT=tcp://172.17.0.116:<port-number>