13

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

我该如何处理这个问题?

4

7 回答 7

24

还有另一种方法。你可以

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

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

于 2017-05-24T19:40:25.160 回答
5

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

mongo:
  image: mongo
  restart: always
  ports:
    - 27017:27017
于 2018-09-09T18:20:32.590 回答
4

您应该在 docker 容器中与 MongoDB 建立 Robomongo SSH 隧道连接。首先你应该在你的 docker 容器中安装一个 ssh 服务器。

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


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

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

于 2016-03-01T11:37:30.190 回答
3

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

所以,我跑了

brew services stop mongodb-community

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

瞧!

于 2020-06-20T20:20:47.350 回答
1

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

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

于 2016-03-02T19:22:19.927 回答
0

首先使用 ssh 登录 登录详情

  1. ssh -i yourpemfile.pem 用户名@ipaddress 在此处输入图像描述

  2. 检查 MongoDB 的运行容器 ID

    码头工人ps -a

  3. 然后检查 mongo 容器 id

docker 检查 container_id

在此处输入图像描述

  1. 然后打开robo3t

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

在此处输入图像描述 在此处输入图像描述

于 2021-01-28T12:00:14.367 回答
-3

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

例如,下面的代码会将机器内部的 27017 端口暴露给主机的 27018 端口。

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

然后,如果您安装了docker-machine并且您的机器是default,您可以在终端中执行以下操作:

docker-machine ip default

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

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

于 2016-03-01T11:51:26.570 回答