Docker-Mongodb-如何连接到Windows 10本地的mongo镜像

Docker-Mongodb-如何连接到Windows 10本地的mongo镜像

我正在尝试连接到本地 Windows 机器上的 docker mongo 映像,我在本地安装了 mongodb,并将 mongodb bin 路径添加到 Windows 路径环境变量中。我正在执行以下步骤

cd <docker-location>

docker login

docker ps

-- 检查 mongo 是否正在运行

docker pull myrepo/mymongo-image:1.0
docker run -p 27017:27017 -d --net=host --name=mytestDB myrepo/mymongo-image:1.0

docker logs mytestDB 

输出:MongoDB 启动:pid=6 port=27017 dbpath=/data/db 64 位 host=moby docker ps 输出:

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS               NAMES
34598734598        myrepo/mymongo-image:1.0   "/bin/sh -c /usr/bin/"   12 hours ago        Up About a minute                       mytestDB

在本地启动 mongo:

mongo --port 27017

但我收到了这样的错误:

MongoDB shell version: 3.2.1
connecting to: 127.0.0.1:27017/test
2016-10-13T20:04:12.273+0530 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, reason: errno:10061 No connection could be made because the target machine actively refused it.
2016-10-13T20:04:12.277+0530 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:226:14
@(connect):1:6

exception: connect failed

请告诉我我哪里犯了错误。

答案1

不要使用--net=host。由于您提供了选项,所以看起来您正在要求docker发布端口-p 27017:27017,但--net=host要求Docker关闭所有网络隔离功能,包括端口发布。

Docker-for-windows 在 Hyperv 中设置了一个小型 VM,Docker 在其中运行。您的--net=host容器最终会监听该 VM 的接口。Docker-for-windows 网络端口转发仅关注已发布的端口,因此不会发生转发。

如果你运行不带的相同命令--net=host,你将得到不同的结果。

有时,如果您尝试运行容器化进程,而发布的端口似乎不起作用,那是因为该进程正在监听容器的lo0接口而不是eth0接口。

这是一个可以用来测试发布端口的很好的基准测试容器:

docker run --name testweb -d -p 8989:80 nginx:alpine

然后你就可以连接到http://127.0.0.1:8989并查看 nginx 欢迎页面。

相关内容