在 Mac 的 Docker 中无法访问的端口
Ports not accessible in Docker on Mac
注意:我是网络菜鸟,所以请相应地解释答案。
我在 运行MacOS 上使用 boot2docker+VirtualBox。
像这样启动我的 Docker 容器:
docker run -it -p 80:80 -p 28017:28017 mine/envbox bash
在容器中我启动了 nginx 和 mongo。然后 inside 我尝试的容器:
curl localhost:80 // returns content
curl localhost:28017 // returns content
所以我知道我的服务在容器内正常运行。 外部 我主机上的容器 I 运行:
curl http://$(boot2docker ip):80 // returns content
curl http://$(boot2docker ip):28017 // connection error
我在 Mac 上的 VirtualBox 上配置了端口转发,如下所示:(应该公开端口 28017)
为什么我在主机上看不到端口 28017?
知道了。 mongodb(绑定到28017端口的进程)有一个默认阻止非本地访问的配置,所以自然不会在容器外可见。取消注释配置解决了问题。
至少它迫使我从 boot2docker 升级到 docker 工具箱,所以这是一件好事。
注意:我是网络菜鸟,所以请相应地解释答案。
我在 运行MacOS 上使用 boot2docker+VirtualBox。
像这样启动我的 Docker 容器:
docker run -it -p 80:80 -p 28017:28017 mine/envbox bash
在容器中我启动了 nginx 和 mongo。然后 inside 我尝试的容器:
curl localhost:80 // returns content
curl localhost:28017 // returns content
所以我知道我的服务在容器内正常运行。 外部 我主机上的容器 I 运行:
curl http://$(boot2docker ip):80 // returns content
curl http://$(boot2docker ip):28017 // connection error
我在 Mac 上的 VirtualBox 上配置了端口转发,如下所示:(应该公开端口 28017)
为什么我在主机上看不到端口 28017?
知道了。 mongodb(绑定到28017端口的进程)有一个默认阻止非本地访问的配置,所以自然不会在容器外可见。取消注释配置解决了问题。
至少它迫使我从 boot2docker 升级到 docker 工具箱,所以这是一件好事。