Я пытаюсь создать 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
}
Однако, когда я пытаюсь подключиться к набору реплик, а не только к одному узлу, я получаю такую группу журналов ошибок:
~/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 (и другие драйверы mongo, такие как pymongo) не знают имени контейнера, которое я указал в контейнере докера. Есть ли способ предоставить эту информацию моему локальному компьютеру? Или я ошибаюсь? Спасибо за вашу помощь

Вы используете MacOS? если это так, кажется, что эти внутренние IP-адреса в докере недоступны, потому что сеть моста докера (Linux) недоступна с хоста macOS.
Подробнее здесь: https://docs.docker.com/docker-for-mac/networking/