Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接到MongoDB查询路由器,以便在windows10上运行的docker容器上进行切分_Mongodb_Docker_Windows 10 - Fatal编程技术网

连接到MongoDB查询路由器,以便在windows10上运行的docker容器上进行切分

连接到MongoDB查询路由器,以便在windows10上运行的docker容器上进行切分,mongodb,docker,windows-10,Mongodb,Docker,Windows 10,这是我的后续行动。连接到配置服务器非常有用。但我在连接MongoDB查询路由器时也面临同样的问题 docker run -d -p 40001:27017 --name QR --hostname QR mongo mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003" --bind_ip 0.0.0.0 下面是我用来创建mongos服务器的命令 docker ru

这是我的后续行动。连接到配置服务器非常有用。但我在连接MongoDB查询路由器时也面临同样的问题

docker run -d -p 40001:27017 --name QR --hostname QR mongo mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003" --bind_ip 0.0.0.0
下面是我用来创建mongos服务器的命令

docker run -d -p 40001:27017 -v C:/mongodata/data/db --name QR mongo mongos --configdb rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003 --bind_ip 0.0.0.0 --port 27017
但我在执行
docker exec-it QR mongo-port 27017时出现以下错误:-

连接到: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb 错误:无法连接到服务器127.0.0.1:27017,尝试连接 失败:SocketException:连接到127.0.0.1:27017时出错::导致 by::无法连接,因为目标计算机处于活动状态 拒绝了connect@src/mongo/shell/mongo.js:374:17@(连接):2:6 异常:连接失败,退出代码为1

下面是配置服务器的复制配置详细信息-

config = {
          "_id": "rs1",
          "configsvr": true,
          "members":
            [
                {
                "_id": 0,
                "host": "6ed1d953f979:27019"
                },
                {
                "_id": 1,
                "host": "086f0ef5c955:27019"
                },
                {
                "_id": 2,
                "host": "391c9c07b341:27019"
                }
            ]
        }
这是容器ID和IP地址

------------------------------------------
Server      IP Address      Container ID 
------------------------------------------
asiaCS      172.30.35.165   6ed1d953f979
europeCS    172.30.32.73    086f0ef5c955
americaCS   172.30.42.189   391c9c07b341

我甚至不确定是否正确配置了mongos。

所以我想出了这个办法。显然,配置服务器很轻,不存储任何数据。因此,我们不需要将其绑定到卷。我首先将所有配置服务器绑定到一个固定的IP(这样docker就不会在每次我停止并启动容器时为它们分配一个新的IP)。但是为了回答这个问题,我将使用问题中提到的IP。我使用下面的命令创建了一个查询路由器

docker run -d -p 40001:27017 --name QR --hostname QR mongo mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003" --bind_ip 0.0.0.0
然后通过运行
docker exec-it QR mongo

现在,当连接到mongos时,如果它抛出连接拒绝错误(问题中提到的错误),您可以使用以下命令-

docker exec -it QR mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003"
C:\MongoShell\bin> mongosh --host IpAddressOfMongos --port 27017
上述命令将在不使用分离模式的情况下启动mongos,并且日志将开始出现在
CMD
PowerShell
(无论您以何种方式运行该命令)控制台上

我在本地安装了mongoshell,打开另一个
CMD
提示符并执行以下命令-

docker exec -it QR mongos --configdb "rs1/172.30.35.165:30001,172.30.32.73:30002,172.30.42.189:30003"
C:\MongoShell\bin> mongosh --host IpAddressOfMongos --port 27017
瞧,它连接成功了。然后,您可以关闭在附加模式下运行docker exec命令的初始控制台

通过执行
docker inspect QR
,可以找到mongos的IP地址