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工具箱,所以这是件好事。