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