I am using docker and run using script. I want to change in one of configuration with host machine IP address in docker.
#!/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
I run my docker with following command.
docker run -t -i $EXPOSE_PORTS $IMAGE "$@"
As mentioned in "How to get the ip address of the docker host from inside a docker container", you can directly access it from the container:
/sbin/ip route|awk '/default/ { print $3 }'
But, as commented, when you are using the docker bridge (default) for the containers, this will output the bridges IP like 172.17.42.1 rather than the host's IP such as 192.168.1.x (typical of an home NAT)
You can pass the actual IP as an environment variable with run --env <key>=<value>
-e "DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')
(From "Is there an easy way to programmatically extract IP address?")
As the OP Pawan Sharma comments:
docker0
gives host docker ip. I usedeth0
, it gives my host ip.
-e "DOCKER_HOST=$(ip -4 addr show eth0| grep -Po 'inet \K[\d.]+')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With