Suppose I have a server running on port 8000 on OSX. How can my Docker container access it via localhost:8000
? I can't change the hostname too as the app in the container is not in my control.
I've read this previous discussion on using --net="host"
for a container to access the host machine's network. However, I'm on OSX and Docker runs inside a VM so localhost from the Docker container with --net="host"
goes to the VM and not my real machine.
Then I tried port forwarding workaround like so: VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port8000,tcp,,8000,,8000";
to no avail.
Any suggestion would be greatly appreciated.
Docker Desktop 18.03+ for Windows and Mac supports host.docker.internal as a functioning alias for localhost. Use this string inside your containers to access your host machine. localhost and 127.0.0.1 – These resolve to the container. host.docker.internal – This resolves to the outside host.
After that, the localhost (127.0.0.1) in your Docker container will point to the host Linux machine.This runs a Docker container with the settings of the network set to host. This container will share the network with the host machine and the container’s localhost will point to the host machine.
That way, you do not have to use boot2docker's IP address: you can use localhost or your own IP address (and your docker container can be accessed from outside).
The host networking driver only works on Linux hosts, and is not supported on Docker Desktop for Mac, Docker Desktop for Windows, or Docker EE for Windows Server. Create and start the container as a detached process.
Thanks to palimpestor's answer I figured it out:
Instead of --net="host"
, use --add-host="localhost:10.0.2.2"
Indeed:
--add-host...
is adding localhost 10.0.2.2
in /etc/hosts (reference)Note: you need to have set up a NAT adapter in your boot2docker VM VirtualBox settings (I did it through the GUI, don't know the CLI).
Instead of running with --net="host"
, try --add-host="localhost:192.168.59.3"
, which is the boot2docker host IP.
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