将robomongo连接到mongoDB docker容器

将robomongo连接到mongoDB docker容器,mongodb,docker,robo3t,Mongodb,Docker,Robo3t,我正在用运行一个NodeJS应用程序。一切正常,通过连接到容器内的Mongo,我可以看到所有数据。但当我连接到时,我看不到任何数据 如何处理此问题?您应该在docker容器内建立到MongoDB的Robomongo SSH隧道连接。首先,您应该在docker容器中安装一个ssh服务器 之后,您应该在Robomongo中配置连接。 在“连接设置”中有Robomongo连接的配置选项卡 转到“SSH”选项卡并配置到docker容器的SSH连接。之后,转到“连接”选项卡,将您与MongoDB的连接

我正在用运行一个
NodeJS
应用程序。一切正常,通过连接到容器内的Mongo,我可以看到所有数据。但当我连接到时,我看不到任何数据


如何处理此问题?

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


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


转到“SSH”选项卡并配置到docker容器的SSH连接。之后,转到“连接”选项卡,将您与MongoDB的连接配置为本地主机范围。

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

app:
  image: node
  volumes:
    - /app
  ports:
    - "27018:27017"
例如,以下代码将把机器内部的端口27017暴露给主机中的端口27018

app:
  image: node
  volumes:
    - /app
  ports:
    - "27018:27017"
然后,如果您安装了docker机器,并且您的机器是默认,您可以在终端中执行以下操作:

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


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

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


“Robomongo v8.5及更低版本不支持MongoDB 3”。这与docker无关。

还有另一种方法。你可以

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

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

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

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

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

    所以,我跑了

    brew服务停止mongodb社区

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


    首先使用ssh登录详细信息登录

  • ssh-i yourpemfile.pemusername@ipaddress

  • 检查MongoDB的运行容器id

    docker ps-a

  • 然后检查mongo容器id

  • 码头工人检查集装箱标识

  • 然后打开robo3t
  • 创建新连接并添加容器id 使用ssh登录详细信息连接到mongodb


    您能分享一些详细信息或可能是您迄今为止尝试过的内容的截图吗?嘿,Siddharth Ajmera,我只是尝试使用robomongo查看我的数据,但它没有显示任何内容,mongoDB正在docker容器中运行,您能看到RoboMongo中列出的数据库和集合吗?我只看到了我的数据库名称,但未显示集合:(双击您的集合。您将在一个层次结构中获得3个文件夹:集合、函数、用户。双击您的集合将显示该数据库中的集合。是的,haverchuck这是我所做的,但对于robomongo,它似乎需要更多配置:)这对我来说不起作用,所以我找到了一个更符合docker理念的解决方案:按照描述制作一个ssh docker,然后使用
    -link\u mymongodocker\u
    参数运行它(还有一个22的端口映射,所以我肯定很容易找到)。然后在robomongo中,我使用mymongodocker而不是localhost(因为它是链接的,所以可以从ssh docker获得)。即使--link不受欢迎,应该用一种更现代的方法来取代,但它仍然很有魅力,因为我太懒了:)这是对我来说唯一有效的答案,因为我在云服务器上,我肯定不会公开我的数据库端口或更改任何容器。谢谢!我在docker compose文件中使用了ecpose。这只会打开服务器内部的端口。所以你可以使用expose,但不使用ports。这会为所有人打开它。有人不同意吗?查找MongoDB容器非常有用,谢谢。出于开发目的,我使用了这个methoddude,它帮了我的忙!谢谢你提供了这个小贴士。未来的读者阅读:如果你在尝试连接到容器中运行的mongo之前用brew安装了mongo,一定要检查一下。@finiteloop很高兴能提供帮助:)在大多数情况下,这应该是解决方案。谢谢你man@SeanKonig很高兴能帮上忙:)