注意:我是网络菜鸟,所以请相应地解释答案。
我在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上的VirtualBox上配置了端口转发,如下所示:(应该暴露端口28017)
为什么我在主机上看不到端口28017?
答案 0 :(得分:1)
知道了。 mongodb(绑定到端口28017的进程)有一个默认阻止非本地访问的配置,因此它自然不会在容器外可见。取消评论该配置解决了问题。
至少它迫使我从boot2docker升级到docker工具箱,所以这是件好事。