I've updated docker on my os x 10.10, so it's now using os x native virtualization. However, I've found it tricky to connect to my host machine from within my nginx container. I tried this:
/sbin/ip route|awk '/default/ { print $3 }'
And got the answer:
172.17.0.1
Then I used this ip in docker-compose.yml:
extra_hosts:
- "master:172.17.0.1"
But nonetheless I keep getting errors:
172.17.0.1 - - [21/Jul/2016:09:33:46 +0000] "GET /api HTTP/1.1" 502 575 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" "-"
2016/07/21 09:33:46 [error] 7#7: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.17.0.1, server: soc-credit.ru, request: "GET /api HTTP/1.1", upstream: "http://172.17.0.5:8080/api", host: "localhost"
Please note this part: client: 172.17.0.1
. Since I've made request from host machine, it proves that ip I got in first step was correct. But connection wasn't established anyway.
I want to stress out that I have a problem connecting FROM WITHIN container TO host and not vice versa.
What am I doing wrong? Thank you!
Had the same problem and being inexperienced in Docker and network configurations I struggled to get the various proposed solutions working. However since this update to Docker for Mac: Docker Community Edition 17.06.0-ce-mac18, 2017-06-28 (stable) I've found using the 'experimental' hostname
docker.for.mac.localhost
allows me to contact services running on the Mac host from within a container. Very useful for dev!From docker 18.03 onwards official recommendation is to connect to the special DNS name
host.docker.internal
, which resolves to the internal IP address used by the host, this is for development purpose, refer to https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workaroundsI am having the same problem and I've found this
https://docs.docker.com/docker-for-mac/networking/#/known-limitations-use-cases-and-workarounds
Notice paragraph 'I want to connect from a container to a service on the host'
I haven't yet tried it because I am looking for a more concrete solution (anyway other than adding alias to my lo address)...
If somebody has something on it please inform!
latest:DNS name host.docker.internal should be used for host resolution from containers. Older aliases (still valid) are deprecated in favor of this one. (See https://tools.ietf.org/html/draft-west-let-localhost-be-localhost-06). docker.for.mac.host.internal should be used instead of docker.for.mac.localhost from Docker Community Edition 17.12.0-ce-mac46 2018-01-09. this allows you to connect to service running on your on mac from within a docker container.please refer below links
understanding the docker.for.mac.localhost behavior
release notes