簡體   English   中英

Docker for mac 1.12.0:如何從容器連接到主機

[英]Docker for mac 1.12.0: how to connect to host from container

我已經在我的 os x 10.10 上更新了 docker,所以它現在使用的是 os x 本機虛擬化。 但是,我發現從我的 nginx 容器中連接到我的主機很棘手。 我試過這個:

/sbin/ip route|awk '/default/ { print $3 }'

並得到了答案:

172.17.0.1

然后我在 docker-compose.yml 中使用了這個 ip:

  extra_hosts:
    - "master:172.17.0.1" 

但盡管如此,我還是不斷收到錯誤消息:

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"

請注意這部分: client: 172.17.0.1 由於我已經從主機發出請求,因此證明我在第一步中獲得的 ip 是正確的。 但無論如何都沒有建立連接。

我想強調的是,我在從容器內連接到主機時遇到問題,反之亦然。

我做錯了什么? 謝謝!

遇到了同樣的問題並且在 Docker 和網絡配置方面缺乏經驗,我努力使各種提議的解決方案發揮作用。 但是,自從 Docker for Mac 更新: Docker Community Edition 17.06.0-ce-mac18, 2017-06-28 (stable)我發現使用“實驗性”主機名docker.for.mac.localhost允許我聯系服務從容器內在 Mac 主機上運行。 對開發非常有用!

我遇到了同樣的問題,我發現了這個

https://docs.docker.com/docker-for-mac/networking/#/known-limitations-use-cases-and-workarounds

注意段落“我想從容器連接到主機上的服務”

我還沒有嘗試過,因為我正在尋找更具體的解決方案(無論如何,除了向我的 lo 地址添加別名)...

如果有人在上面有什么請告知!

最新:DNS 名稱 host.docker.internal 應該用於從容器解析主機。 較舊的別名(仍然有效)已被棄用,取而代之的是這個別名。 (參見https://tools.ietf.org/html/draft-west-let-localhost-be-localhost-06 )。 應該使用 docker.for.mac.host.internal 而不是 Docker Community Edition 17.12.0-ce-mac46 2018-01-09 中的 docker.for.mac.localhost。 這允許您從 docker 容器內連接到在 Mac 上運行的服務。請參閱以下鏈接

了解 docker.for.mac.localhost 行為

發行說明

從 docker 18.03 開始​​官方推薦連接特殊的 DNS 名稱host.docker.internal ,解析為主機使用的內部 IP 地址,這是為了開發目的,參考https://docs.docker.com/ docker-for-mac/networking/#use-cases-and-workarounds

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM