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.
Thanks to palimpestor's answer I figured it out:
Instead of
--net="host"
, use--add-host="localhost:10.0.2.2"
Indeed:
Read: it's your host, seen from boot2docker.
--add-host...
is addinglocalhost 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.