如何在Docker容器中获取本地主机IP地址?

我正在使用docker并使用脚本运行。 我想在Docker中将主机IP地址configuration成其中的一个。

#!/bin/bash IP=$(echo `ifconfig eth0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'`) echo Setting xwiki config IP CONFIG=/xwiki/webapps/xwiki/WEB-INF/xwiki.cfg sed -i -e "s/^xwiki.authentication.authhost=localhost*/xwiki.authentication.authhost= $IP/" $CONFIG 

/xwiki/start_xwiki.sh -f

我用下面的命令运行我的docker。

 docker run -t -i $EXPOSE_PORTS $IMAGE "$@" 

如“ 如何从docker集装箱中获取docker主机的IP地址”中所述 ,您可以直接从容器中访问它:

 /sbin/ip route|awk '/default/ { print $3 }' 

但是, 正如所评论的那样 ,当你使用容器的docker bridge(默认)时,这将会输出类似172.17.42.1的网桥IP,而不是主机的IP,比如192.168.1.x(典型的家庭NAT)

您可以通过run --env <key>=<value>来将实际IP作为环境variables传递

 -e "DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+') 

(从“ 有一个简单的方法来编程提取IP地址? ”)

正如OP Pawan Sharma所言 :

docker0给主机dockerIP。 我用eth0 ,它给我的主机ip。

 -e "DOCKER_HOST=$(ip -4 addr show eth0| grep -Po 'inet \K[\d.]+') 

docker run -it --net="host" IMAGE

但我不太清楚你想要什么。 就像应该可以通过主机IP访问的应用程序?