Docker for mac 1.12.0: how to connect to host from

2020-06-16 05:49发布

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!

4条回答
我只想做你的唯一
2楼-- · 2020-06-16 06:13

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!

查看更多
我想做一个坏孩纸
3楼-- · 2020-06-16 06:13

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-workarounds

查看更多
聊天终结者
4楼-- · 2020-06-16 06:21

I 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!

查看更多
一夜七次
5楼-- · 2020-06-16 06:27

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

查看更多
登录 后发表回答