Mongodb Docker中的Mongo DB集群

Mongodb Docker中的Mongo DB集群,mongodb,docker,networking,ubuntu-16.04,Mongodb,Docker,Networking,Ubuntu 16.04,我正在尝试创建一个Mongo复制,并查看它在通过应用程序访问时出现故障时如何工作 我正在使用Docker创建3个Mongo实例,并将它们添加到一个复制集中 我可以通过RoboMongo访问每个mongo。而且复制工作也很好 这是我试图在我的Ubuntu 16.04上运行的应用程序 public static void main(String[] args) { System.out.println("Started"); MongoClient client =

我正在尝试创建一个Mongo复制,并查看它在通过应用程序访问时出现故障时如何工作

我正在使用Docker创建3个Mongo实例,并将它们添加到一个复制集中

我可以通过RoboMongo访问每个mongo。而且复制工作也很好

这是我试图在我的Ubuntu 16.04上运行的应用程序

public static void main(String[] args) {

        System.out.println("Started");
        MongoClient client = new MongoClient(Arrays.asList(new ServerAddress(
                "localhost", 30001), new ServerAddress("localhost", 30002),
                new ServerAddress("localhost", 30003)));

        MongoDatabase database = client.getDatabase("ecodedb");
        System.out.println("Connected");
        FindIterable<Document> mydatabaserecords = database.getCollection("test").find();
        MongoCursor<Document> iterator = mydatabaserecords.iterator();
        System.out.println("Fetching");
        while (iterator.hasNext()) {
            Document doc = iterator.next();
            System.out.println(doc.getString("test"));
        }
        System.out.println("closing");
        client.close();
    }

当我看到日志时,它看起来像是应用程序能够检测出哪个是主要的,哪个是次要的,但不能查询

所以问题是Mongo驱动程序正在寻找主机名“Mongo22”及其与ip的映射。我在Mongo容器主机名文件中进行映射

相反,我必须在主机的主机名文件中(即Ubuntu中)执行此操作

所以我添加了这样的条目

mongo22 172.134.55.66
mongo11 172.44.55.34

之后,我的复制工作正常。

ip地址是多少?容器的IP地址?是,Docker容器IP。您可以通过对默认网络(网桥)使用“docker inspect bridge”来发现这一点。
mongo22 172.134.55.66
mongo11 172.44.55.34