从远程主机连接到 Docker 容器内的 Mongo 路由器
Connect to Mongo Router inside Docker container from remote host
我在 AWS 中有一个 EC2 实例,它带有一个 mongo
docker 容器,它初始化一个 mongo router
例如:
docker run --network mongo-net -p 27051:27017 --expose=27017 -d --name=mongos51 mongo mongos --port 27017 --configdb configserver/configserver41:27017,configserver42:27017 --bind_ip 0.0.0.0
我已经在 AWS 中打开我的 SG 以允许任何连接,我可以毫无问题地访问端口 27051 上的 public IP。
我的容器在 bidge
docker 网络中,以允许我所有的 mongo 实例进行通信。
但是,如果我尝试连接到 mongo shell
,例如:
mongosh mongodb://public_ip:27051
我立即收到错误 Connection refused
。如果我尝试使用 :
从容器内部打开 mongoshell
docker exec -it mongos51 bash -c "echo 'sh.addShard(\"shard1/mongodb11\")' | mongosh "
Current Mongosh Log ID: 6149ed68def89bc1907c8988
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
如果我使用私有 IP 而不是 127.0.0.1
,我会遇到同样的错误。
我在这里缺少什么?
根据文档尝试这样连接:
mongosh --host public_ip --port 27051
当我遵循这些 steps 时,它对我有用。
我在 AWS 中有一个 EC2 实例,它带有一个 mongo
docker 容器,它初始化一个 mongo router
例如:
docker run --network mongo-net -p 27051:27017 --expose=27017 -d --name=mongos51 mongo mongos --port 27017 --configdb configserver/configserver41:27017,configserver42:27017 --bind_ip 0.0.0.0
我已经在 AWS 中打开我的 SG 以允许任何连接,我可以毫无问题地访问端口 27051 上的 public IP。
我的容器在 bidge
docker 网络中,以允许我所有的 mongo 实例进行通信。
但是,如果我尝试连接到 mongo shell
,例如:
mongosh mongodb://public_ip:27051
我立即收到错误 Connection refused
。如果我尝试使用 :
docker exec -it mongos51 bash -c "echo 'sh.addShard(\"shard1/mongodb11\")' | mongosh "
Current Mongosh Log ID: 6149ed68def89bc1907c8988
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
如果我使用私有 IP 而不是 127.0.0.1
,我会遇到同样的错误。
我在这里缺少什么?
根据文档尝试这样连接:
mongosh --host public_ip --port 27051
当我遵循这些 steps 时,它对我有用。