How to access webserver running on localhost from a docker container on a network?

11,976

You can do this with the actual IP address of your local computer.

So for example, if your en0 IP is 10.100.20.32 on your host OS, you can run:

docker exec testcontainer curl --data "foobaz=foo" http://10.100.20.32:9000/

which will successfully allow you to make the http requests.

Note that if you are doing this from a container on the host docker network, this is trivial, as you can directly access localhost or 0.0.0.0 without having to use the actual machine IP.

Share:
11,976
enderland
Author by

enderland

Farewell Stack Exchange. o7 to everyone I've shared labors with over these many years. Take care.

Updated on June 09, 2022

Comments

  • enderland
    enderland almost 2 years

    I have the following system configuration:

    • Docker container running on user defined network
    • docker-machine (with VirtualBox on OS:X forwarding port 9000 to 9000)
    • Local webserver running on http://localhost:9000

    I do not know how to make a basic http request against this webserver, from within my docker container.

    To test this I am using:

    docker exec testcontainer curl --data "foobaz=foo" http://{hostname}:9000/
    

    where I have tried, for hostnames:

    • 'localhost'
    • '127.0.0.1'
    • '192.168.99.100' (docker-machine IP)

    Each time I receive errors or timeouts. When I run the curl command locally (not in docker and on my host OS:X machine) I am able to successfully post the http request.

    I cannot disconnect the docker container from my user-defined network. I also cannot add my webserver to that network, as it is not running in a container. Also, I know it is trivial to connect the other way (curl to a webserver running in a docker container) but this is not my use case.

    How can I successfully route that http request from the docker container which is part of a user defined network to my localhost webserver?