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

有没有办法知道容器运行的Docker容器内的CentOS主机的IP地址? 就像说,如果我有一个Linux机器10.10.10.10 IPdocker容器1和容器2运行,我想从我的Java代码查询IP。 Java代码在Docker容器中。 我实际上是将这些服务作为docker群运行的。

Docker是关于从主机隔离的容器。

所以,从理论上讲,容器不应该知道这个IP地址,除非主机将它“提供给”容器

一些想法

在运行时在一个环境variables中

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

在构build时在一个环境variables中

在你的Dockerfile中有一行

ENV host_IP 10.10.10.10

文件

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

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

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

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

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