Mac上的Docker无法访问端口

注意:我是一个networkingnoob,所以请解释相应的答案。

我在Mac OS上运行boot2docker + VirtualBox。

像这样启动我的Docker容器:

docker run -it -p 80:80 -p 28017:28017 mine/envbox bash 

在容器中,我启动nginx和mongo。 然后容器里面我尝试:

 curl localhost:80 // returns content curl localhost:28017 // returns content 

所以我知道我的服务在集装箱里是健康的。 主机上的容器之外 ,我运行:

 curl http://$(boot2docker ip):80 // returns content curl http://$(boot2docker ip):28017 // connection error 

我在我的Mac上configuration了我的VirtualBox上的端口转发,如下所示:(port 28017 should be exposed)

在这里输入图像说明

为什么我的主机上看不到端口28017?

得到它了。 mongodb(进程绑定到端口28017)有一个configuration,默认情况下阻止非本地访问,所以当然它不会在容器外部可见。 取消注释该configuration解决了这个问题。

至less它迫使我从boot2docker升级到docker工具箱,所以这是件好事。