Once in a while, you may need your Docker host's IP address. For instance, you need to be able to connect to the host network from inside a Docker ...
For further actions, you may consider blocking this person and/or reporting abuse
Another alternative is to add the entry below to your Linux host's
/etc/hosts
:Then you can simple define the environments as:
Is 172.17.0.1 host ip?
If it is means every time host's ip address changes for some reason maybe network switching to WIFI to LAN we need to update this and rerun our compose?
Running WSL (Ubuntu 20.04 LTS), I added this to my .bashrc file.
This runs
/sbin/ip route
, searches for the line containing "dev eth0 proto kernel", then grabs the 9th element from that line which corresponds to the IP address.Then, in docker-compose.yml I referenced it here,
In case you are dealing with several Docker bridge networks, it's important to get the gateway IP of the correct network:
I tried this method:
$ export DOCKER_GATEWAY_HOST=172.17.0.1
put a new env docker container:HOST_IP=${DOCKER_GATEWAY_HOST:-host.docker.internal}
When the docker runs, it shows HOST_IP=host.docker.internal
The same is picked up by my python code.
Does this (
host.docker.internal
) also needs to be resolved to get the actual host IP?Thank you, you give me new insight. I do a lot research about this too and write on my gist github. problem connect container to host
if you need the host.docker.internal (for example, nginx proxy to your host network), use an entrypoint script (IE: ENTRYPOINT['/entrypoint.sh'])
" install iputils-ping & iproute2 (or like packages)
" check if the host name resolves,
" if not, then get the gateway of the current network (which is the host)
" and set it in the containers host file
!/bin/sh
HOST_DOMAIN="host.docker.internal"
ping -q -c1 $HOST_DOMAIN > /dev/null 2>&1
if [ $? -ne 0 ]; then
HOST_IP=$(ip route | awk 'NR==1 {print $3}')
echo -e "$HOST_IP\t$HOST_DOMAIN" >> /etc/hosts
fi
Cheers ;-)
Nice trick!! I I was searching for a solution like this since I moved to an Ubuntu machine at work. Thanks a ton! π
Hi Jeremie,
Thanks for the feedback. Iβm happy I could help you. βοΈ
to automatize the iP (only get the first)
Thanks for the feedback!
This is broken (at least on MacOS). I donβt get the hostβs IP address. I get 192.168.65.3 for host.docker.internal. Am I missing something?
As I understand 'host.docker.internal' inside docker default network will be bonded to your host machine. If you can access with 'host.docker.internal' your host ports then everything is ok
Great tip, way simpler and works out of the box without any need for AWK/SED.
Nice! This could definitely come in handy!
Thanks Niall. It does - resolved some issues for our team.
this could be used it in linux for production?