无法通过mac上的mono客户端连接到Mongo Docker实例

我已经安装了Mongo Docker镜像并使用这些命令运行它(安装了mac boot2docker)

docker pull mongo 

 docker run --name some-mongo -d mongo 

但现在我想通过运行mongo客户端连接到它:

 mongo --port 27017 --host 127.0.0.1 

但我得到这个错误消息:

 MongoDB shell version: 3.0.4 connecting to: 127.0.0.1:27017/test 2015-07-27T14:22:24.088+0300 W NETWORK Failed to connect to 127.0.0.1:27017, reason: errno:61 Connection refused 2015-07-27T14:22:24.094+0300 E QUERY Error: couldn't connect to server 127.0.0.1:27017 (127.0.0.1), connection attempt failed at connect (src/mongo/shell/mongo.js:181:14) at (connect):1:6 at src/mongo/shell/mongo.js:181 exception: connect failed 

很明显,Docker无法公开端口,因为telnet到本地主机上的27017也失败了。

我做错了什么?

你有两个问题:

像h3nrik说,你应该连接到boot2docker虚拟机的地址。 如果您不知道,请使用以下命令:

boot2docker ip

而你的港口并不是开放的。

您的Docker run命令应该如下所示:

docker run -p 27017:27017 --name some-mongo -d mongo

您应该使用boot2docker虚拟机的IP地址,而不是127.0.0.1 。 通常为192.168.59.103 。 你可以validation你应该连接哪个IP来执行boot2docker ip

更新 :我发现你不能通过你的容器run语句导出任何端口:

 docker run --name some-mongo -d mongo 

当然,没有任何端口暴露你不能连接。 尝试在运行后重新连接(根据您的要求,您可以根据mongodb文档添加更多的端口):

 docker run --name some-mongo -d -p 27017:27017 mongo