簡體   English   中英

無法從 docker 容器內訪問 MacOSX 主機上的端口

[英]Cannot access ports on MacOSX host from within docker container

這些是我采取的步驟:

准備工作:

第一的:

docker-machine create -d virtualbox default

然后,我使用以下 Dockerfile 創建了一個容器:

FROM centos:latest

沒有別的——只是一個 CentOS 的副本。 我構建了容器:

docker build -t mycontainer .

並運行它:

docker run -it --net="host" --name="test" -p 9200:9200 mycontainer

問題:當我進入容器並嘗試訪問在 MacOSX 上運行的服務(例如簡單的網絡服務器或本地 elasticsearch)時,我得到:

curl localhost:9200
curl: (7) Failed connect to localhost:9200; Connection refused

我從我的 docker vm ( docker-machine ssh default ) 中得到了同樣的錯誤。

我嘗試在 virtualbox 中進行端口轉發,將 9200 設置為 9200 - 但它沒有幫助。

有任何想法嗎?

您無法使用 localhost:port 從 docker 容器連接到主機上的端口(除非您使用--net="host"運行容器)

您需要指定要連接的主機的 IP 地址。

請檢查主機上的IP:

dude-server:stackoverflow cwoehrle$ ping $(hostname)
PING dude-server (192.168.1.169): 56 data bytes
64 bytes from 192.168.1.169: icmp_seq=0 ttl=64 time=0.053 ms
64 bytes from 192.168.1.169: icmp_seq=1 ttl=64 time=0.069 ms

在容器中(分別使用您的 ip):

root@8975fada1ac3:/# nc 192.168.1.169 9200

編輯:要連接到 Mac 上的主機端口,您可以使用默認網關地址 10.0.2.2,例如nc 10.0.2.2 9200

從容器內,只需參考:

host.docker.internal

因此,您的 curl 命令將是:

curl http://host.docker.internal:9200

暫無
暫無

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

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