将robomongo连接到mongoDB docker容器

问题描述 投票:13回答:5

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

我该如何处理这个问题?

mongodb docker robo3t
5个回答
3
投票

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

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


之后,您应该在Robomongo中配置您的连接。在“连接设置”中,您可以看到Robomongo Connection的配置选项卡。

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


18
投票

还有另一种方式。您可以

  1. 将Robomongo SSH连接到托管Docker应用程序的实际虚拟服务器(SSH选项卡,选中“使用SSH隧道”并相应地填写其他字段)
  2. 现在ssh进入终端的同一台机器。
  3. docker ps应该向您展示您的MongoDB容器。
  4. docker inspect <mongo container id>将打印出有关该容器的完整信息。最后查找IPAddress,它将为您提供容器的本地IP。
  5. 在Robomongo的“连接”选项卡中使用该容器IP进行连接。

另一个注意事项:确保不以任何方式暴露您的mongodb服务端口(Dockerfile和docker-compose.yml),因为这将使您的数据库可以从任何地方公开访问。假设您没有为该服务设置用户名/密码,您将很快被扫描和入侵。


4
投票

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

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

1
投票

请注意,也许你将无法使用ssh,因为这只是mongo和robomongo之间不兼容的问题。

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


-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。

如果您的docker机器不是虚拟机且是您的操作系统,则数据库的地址将是localhost和端口27018。

© www.soinside.com 2019 - 2024. All rights reserved.