Docker for mac 1.12.0: how to connect to host from container

给你一囗甜甜゛ 提交于 2019-12-21 04:37:15

问题


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


回答1:


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!




回答2:


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:


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




回答4:


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



来源:https://stackoverflow.com/questions/38504890/docker-for-mac-1-12-0-how-to-connect-to-host-from-container

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!