Docker Community Forums

Share and learn in the Docker community.

Accessing host machine from within docker container

(francesco) #10

I have the same issue. With solution by @mikehaertl I can ping the host, but I can’t curl.
Any suggestion to make it work?

(Rhudson) #11

Try connecting the container to the ‘host’ network.
e.g. –

docker run --network host ...

Run this from within the container to get the IP of the host:

route | awk '/^default/ { print $2 }'
(Ashwinks) #12

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:"

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

(Danj210) #13

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

(Jjzabkar) #14

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

sudo ifconfig lo0 alias

Then in docker run, I used:


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

(Kevinpmcc) #15

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;
(Rohaq) #16

There’s also 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 - will mean nothing to half of them. Any suggestions?

(Luiszambrano) #17
(Stephanegerber) #19

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.

(Sam) #20

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

(Felipegouveiae) #21

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

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

It works like a charm for me.

Thanks @rohaq and @kevinpmcc !

(Kostyavyrodov) #22

What if your docker works with linux?

1 Like
(Qoomon) #23

Docker Container to access host ports =>

(Realdubb) #24

This worked ! Thank you

(Clns) #25

Yes, same issue here and a valid use case.

(Mosen11) #26

I try to access my mongoDB on host by the container but I get the following exception: Exception in monitor thread while connecting to server localhost:27017
com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.connection.DefaultServerMonitor$
Caused by: Connection refused (Connection refused)
at Method)
at com.mongodb.connection.SocketStreamHelper.initialize(
I run my container with this command: docker run --network=“host” 659004210509. I try several variation but none of them worked.

(Kensai) #27

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.

(Ognyan Dimitrov) #29

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.

(Gary Forghetti) #30

Yes, check this post.