从远程主机连接到 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 时,它对我有用。