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>