mongodb - 无法连接到工作的Dockerized Mongo ReplSet

标签 mongodb docker replicaset

我正在尝试使用以下docker-compose文件创建在本地运行的Mongo ReplicaSet:

version: '2.0'

services:
  db01:
    image: mongo:3.4
    mem_limit: 512m
    restart: always
    ports:
      - "27017:27017"
    volumes:
      - datadb01:/data/db
      - ./etc/mongod.conf:/etc/mongod.conf
    command: mongod --smallfiles --noIndexBuildRetry --replSet rs0
    container_name: db01
    networks:
      - mongo

  db02:
    image: mongo:3.4
    mem_limit: 512m
    restart: always
    ports:
      - "27018:27017"
    volumes:
      -  datadb02:/data1/db
      - ./etc/mongod.conf:/etc/mongod.conf
    command: mongod --smallfiles --noIndexBuildRetry --replSet rs0
    container_name: db02
    networks:
      - mongo

因此,这实际上似乎可行!我不会发布全部内容,但是当我运行rs.status()时,我得到以下信息:
{
  "set" : "rs0",
  ...
  "ok" : 1
}

但是,当我尝试连接到copysetSet而不是单个节点时,会收到以下错误日志:
~/utils/infrastructure/content-repl-set [replay-content*]: mongo --host rs0/127.0.0.1:27017,127.0.0.1:27018
MongoDB shell version v4.0.0
connecting to: mongodb://127.0.0.1:27017,127.0.0.1:27018/?replicaSet=rs0
2018-09-10T17:50:42.173-0400 I NETWORK  [js] Starting new replica set monitor for rs0/127.0.0.1:27017,127.0.0.1:27018
2018-09-10T17:50:42.176-0400 I NETWORK  [js] Successfully connected to 127.0.0.1:27018 (1 connections now open to 127.0.0.1:27018 with a 5 second timeout)
2018-09-10T17:50:42.177-0400 I NETWORK  [js] changing hosts to rs0/db01:27017,db02:27017 from rs0/127.0.0.1:27017,127.0.0.1:27018
2018-09-10T17:50:42.177-0400 I NETWORK  [ReplicaSetMonitor-TaskExecutor] Successfully connected to 127.0.0.1:27017 (1 connections now open to 127.0.0.1:27017 with a 5 second timeout)
2018-09-10T17:50:42.684-0400 W NETWORK  [js] Unable to reach primary for set rs0

我的最佳猜测是mongo shell(以及其他mongo驱动程序,例如pymongo)不知道我在docker容器中指定的容器名称。有没有办法将此信息公开给我的本地计算机?还是我记错了?谢谢你的帮助

最佳答案

您正在使用MacOS吗?如果是这样,似乎docker中的那些内部IP地址无法访问,因为docker(Linux)桥接网络无法从macOS主机访问。

此处更多信息:https://docs.docker.com/docker-for-mac/networking/

关于mongodb - 无法连接到工作的Dockerized Mongo ReplSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266230/

相关文章:

mongodb - FIWARE Cygnus 在空间使用方面有任何问题吗?

postgresql - 初始化数据库 : could not change permissions of directory on Postgresql container

node.js - MongoDB 连接字符串是否需要 ReplicaSet 中每个服务器的身份验证详细信息?

mongodb - 使用 Golang mgo : Persistent no reachable server to replica set 连接到 MongoDB Atlas

mongodb - NoSQL 和即席查询 - 数百万行

mongodb - 我如何正确设置Keystone.js应用程序以使其在mongo的docker中运行?

c# - 循环遍历结果集 MongoDB 3

python - mongodb 查询中的逻辑运算符与 python

java - java 标志 Xms 和 Xmx 是否覆盖标志 XX :+UseCGroupMemoryLimitForHeap?

javascript - 在服务器端编写 mongodb 更改的监听器