无法连接到Docker容器中的mongodb。

28 浏览
0 Comments

无法连接到Docker容器中的mongodb。

尝试连接Docker容器中的MongoDb时,出现连接被拒绝的问题。

  1. 以下是docker ps的输出:

docker ps CONTAINER ID IMAGE COMMAND

CREATED STATUS PORTS

NAMES 21063296d7d8 mongo "/entrypoint.sh mongo"

44 minutes ago Up 29 minutes 0.0.0.0:57017->27017/tcp

mongodb-dev

  1. 以下是docker logs mongodb-dev的片段:

2015-11-28T05:36:36.363+0000 I CONTROL [initandlisten] db version

v3.0.7 2015-11-28T05:36:36.363+0000 I CONTROL [initandlisten] git

version: 6ce7cbe8c6b899552dadd907604559806aa2e9bd

2015-11-28T05:36:36.363+0000 I CONTROL [initandlisten] build info:

Linux ip-10-183-78-195 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64

BOOST_LIB_VERSION=1_49 2015-11-28T05:36:36.363+0000 I CONTROL

[initandlisten] allocator: tcmalloc 2015-11-28T05:36:36.363+0000 I

CONTROL [initandlisten] options: {} 2015-11-28T05:36:36.365+0000 I

NETWORK [initandlisten] waiting for connections on port 27017

  1. 使用端口57017连接到MongoDB的Docker容器时出现的错误:

mongo localhost:57017

MongoDB shell version: 3.0.7 connecting to: localhost:57017/test

2015-11-27T22:09:22.733-0800 W NETWORK Failed to connect to

127.0.0.1:57017, reason: errno:61 Connection refused 2015-11-27T22:09:22.734-0800 E QUERY Error: couldn't connect to

server localhost:57017 (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

请告诉我我漏掉了什么。谢谢您的帮助!

0
0 Comments

问题原因:在使用Docker容器时,如果是在Mac上使用,需要在VirtualBox的连接设置中进行端口转发,否则无法连接到MongoDB。

解决方法:在VirtualBox中进行端口转发,将主机的端口57017映射到容器中的端口57017。具体操作如下:

VBoxManage controlvm "boot2docker-vm" --natpf1 "tcp-port57017 ,tcp,,57017,,57017"
VBoxManage controlvm "boot2docker-vm" --natpf1 "udp-port57017 ,udp,,57017,,57017"

感谢提供解决方法的作者,通过在VirtualBox中设置端口转发后,问题得以解决,现在可以成功连接MongoDB了。

0