读取docker容器内主机的IP地址

时间:2017-05-18 14:40:31

标签: docker docker-swarm

有没有办法知道容器运行的docker容器内的CentOS主机的IP地址?就像说如果我有一台运行docker container1和container2的linux机器10.10.10.10 IP,我想从我的java代码中查询IP。 Java代码位于docker容器内。我实际上是作为docker swarm运行这些服务。

2 个答案:

答案 0 :(得分:1)

Docker是关于将容器与主机隔离。

所以,理论上,容器不应该知道这个IP地址,除非主机"给出"它到容器

一些想法

在运行时的环境变量中

或者

docker run -e "host_IP=10.10.10.10"...

或包含

的文件my_env

host_IP 10.10.10.10并在

中使用它

docker run --env-file my_env

参见文档

https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file

在构建时的环境变量中

在你的Dockerfile中有一行

ENV host_IP 10.10.10.10

doc

https://docs.docker.com/engine/reference/builder/#env

您可以使用

在主机和容器之间共享/ etc / hosts

docker run -v /etc/hosts:/etc/hosts ...

答案 1 :(得分:0)

您可以使用以下netstat命令从容器内找到主机IP:

netstat -nr | grep '^0.0.0.0' | awk '{print $2}'