将robomongo连接到mongoDB docker容器

时间:2016-03-01 10:32:13

标签: mongodb docker robo3t

我正在使用docker-compose运行NodeJS应用。一切正常,我可以通过连接到容器内的Mongo来查看我的所有数据。但是当我连接到RoboMongo时,我看不到任何数据。

我该如何处理这个问题?

7 个答案:

答案 0 :(得分:18)

还有另一种方式。你可以

  1. 使用Robomongo将SSH连接到托管Docker应用程序的实际虚拟服务器(SSH选项卡,检查"使用SSH隧道"并相应地填写其他字段)
  2. 现在ssh进入终端的同一台机器。
  3. // may make the list larger than necessary // its internal array is copied each time the list grows beyond its capacity // code is very straight forward progression.map { Math.sqrt(it.toDouble()) } // will make the list the exact size needed // no copies are made // code is more complicated progression.mapTo(ArrayList(progression.last / 2 + 1)) { Math.sqrt(it.toDouble()) } // will make the list the exact size needed // a single intermediate list is made // code is minimal and makes sense progression.toList().map { Math.sqrt(it.toDouble()) } 应该会显示您的MongoDB容器。
  4. docker ps将打印出有关该容器的完整信息。最后查找docker inspect <mongo container id>,它将为您提供容器的本地IP。
  5. 在&#34;连接&#34; Robomongo中的选项卡使用该容器IP进行连接。
  6. 另一个旁注: 确保您不以任何方式暴露您的mongodb服务端口(Dockerfile和docker-compose.yml),因为这将使您的数据库从各地公开访问。假设您没有为该服务设置用户名/密码,您很快就会被扫描并入侵。

答案 1 :(得分:4)

最简单的方法是启用转发Mongo Container本身,这就是我的docker-compose的样子。

mongo:
  image: mongo
  restart: always
  ports:
    - 27017:27017

答案 2 :(得分:3)

你应该在docker容器内部对MongoDB进行Robomongo SSH隧道连接。首先,您应该在docker容器中安装ssh服务器。

  

https://docs.docker.com/engine/examples/running_ssh_service/

之后,您应该在Robomongo中配置您的连接。 在“连接设置”中,有Robomongo连接的配置选项卡。

转到“SSH”选项卡并配置与docker容器的SSH连接。之后转到“连接”选项卡并配置与MongoDB的连接,就像它在localhost范围内一样。

答案 3 :(得分:1)

请注意,您可能无法使用ssh,因为这只是mongo和robomongo之间不兼容的问题。

&#39; Robomongo v8.5及更低版本不支持MongoDB 3&#39;。它与docker无关。

答案 4 :(得分:1)

我面临着另一个问题。我已经在本地安装了MongoDB。因此,当docker上的MongoDB运行时,它与在我的主机上运行的MongoDB发生冲突。我已经使用brew安装了它。

所以,我跑了

brew services stop mongodb-community

,然后我重新启动Robo3t。我看到了在docker上运行的MongoDB中创建的数据库。

Voila!

答案 5 :(得分:0)

首先使用 ssh 登录详细信息

  1. ssh -i yourpemfile.pem username@ipaddress enter image description here

  2. 检查正在运行的 MongoDB 容器 ID

    docker ps -a

  3. 然后检查mongo容器id

docker 检查 container_id

enter image description here

  1. 然后打开 robo3t

创建新连接并添加容器ID 使用 ssh 登录详细信息连接到 mongodb

enter image description here enter image description here

答案 6 :(得分:-3)

在您的docker-compose文件中,您可以向主机公开端口

例如,以下代码将机器内的端口27017暴露给主机中的端口27018.

app:
  image: node
  volumes:
    - /app
  ports:
    - "27018:27017"

然后,如果您安装了 docker-machine 并且您的计算机默认,则可以在终端中执行此操作:

docker-machine ip default

它将为您提供主机的IP,例如 192.168.2.3 。数据库(主机)的地址为 192.168.2.3 ,端口 27018

如果您的泊坞机不是虚拟机并且是您的操作系统,则数据库的地址将是 localhost ,端口 27018