Accessing host machine from within docker container

In case if you just want to reach your host machine as ‘localhost’ add the following option to docker run

docker run --add-host="localhost:192.168.65.1"

In my case 192.168.65.1 is always the IP to the host ( output of : route | awk '/^default/ { print $2 }' )

6 Likes

Not a helpful question at all. I am trying to do the same thing as original poster.

Building on @mikehaertl’s response, on OSX, I was able to add an alias for my loopback adapter:

sudo ifconfig lo0 alias 172.16.222.111

Then in docker run, I used:

--add-host my.private.dnsname.com:172.16.222.111

This workaround enables docker-to-localhost connectivity on OSX’s docker as of 17.06.

2 Likes

You can now do this with docker for mac with docker.for.mac.localhost

from Docker for Mac release notes

Add an experimental DNS name for the host: docker.for.mac.localhost

In my nginx.conf I could reach localhost:8090 on the host machine from within a Docker container with

proxy_pass http://docker.for.mac.localhost:8090/app;
13 Likes

There’s also docker.for.win.localhost for Docker for Windows users.

What I’d really like though is a method to do this cross-platform - We have Linux and Windows users that use the same docker-compose.yaml - docker.for.win.localhost will mean nothing to half of them. Any suggestions?

4 Likes

Exactly, so far I am not able to achieve what seems an easy task. The goal beeing avoinding to put the ip in the image.

i would use the --add_host parm when u start the container

no network nor hosts are needed. As @rohaq and @kevinpmcc mentioned,

for windows : docker.for.win.localhost
for mac : docker.for.mac.localhost

It works like a charm for me.

Thanks @rohaq and @kevinpmcc !

2 Likes

What if your docker works with linux?

Docker Container to access host ports => https://github.com/qoomon/docker-host.

This worked ! Thank you

Yes, same issue here and a valid use case.

As per this page you can also use host.docker.internal as a platform-agnostic way to reference the host.

1 Like

I thought you were going to be my hero… but as per the very next sentence on that page,

This is for development purpose and will not work in a production environment outside of Docker for Windows.

EDIT: I see the same comment in the Mac docs saying the same thing, all as of 18.03, however I have 18.07 and that does not resolve.

Can you use environment variables for that matter? You can write any host information (the host ip) in a variable and pass it to the container the moment you run it.

Yes, check this post.

thank you ! you saved my week <3

My situation is to use the host HTTP Proxy in order to access the outer network for the build task.

Aside, for Linux this seems to require --add-host=host.docker.internal:host-gateway. Or use 172.17.0.1 instead of host.docker.internal.