无法从Docker容器内访问MacOSX主机上的端口

这些是我采取的步骤:

Prework:

第一:

docker-machine create -d virtualbox default 

然后,我用下面的Dockerfile创build了一个容器:

FROM centos:latest

没有别的 – 只是一个CentOS的副本。 我build立了容器:

 docker build -t mycontainer . 

并运行它:

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

问题:当我进入容器并尝试访问在MacOSX上运行的服务(例如简单的Web服务器或本地elasticsearch)时,我得到:

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

我从我的dockervm( 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