无法从码头工人容器内访问MacOSX的主机端口
问题描述:
这些都是我所采取的步骤:无法从码头工人容器内访问MacOSX的主机端口
Prework:
第一:
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
我从泊坞窗VM(docker-machine ssh default
)内得到同样的错误。
我尝试在virtualbox中进行端口转发,将9200设置为9200 - 但它没有帮助。
任何想法?
答
你不能从一个码头工人容器与本地主机连接到端口的主机上:端口(除非你用--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):
[email protected]:/# nc 192.168.1.169 9200
编辑: 要连接到您的主机端口在Mac上你可以使用默认网关地址10.0.2.2,例如nc 10.0.2.2 9200
我用'--net =“host”',但是我发现我可以连接到VM但不是MacOSX。那么,我需要从虚拟机获得一个双向网络到我的MacOSX? – Xiphias
对不起,我跳过了--net =“host”部分。是的,您可以在virtualbox中将网络设置为NAT以访问主机的端口。尽管如此,我仍然无法连接到localhost:端口,但必须使用'nc 10.0.2.2 9200'连接到主机端口(10.0.2.2是nat连接的默认网关) – christian
哇,现在这就是我喜欢的原因堆栈溢出。我不必使用'nc',甚至不需要'--net =“host”'。我的elasticsearch实例在容器内使用'curl 10.0.2.2:9200'开箱即用。我怎么知道的? (诚实的问题:是10.0.2.2常识吗?) – Xiphias