当前位置: 首页 > 知识库问答 >
问题:

将Robo 3T连接到Docker MongoDB容器

习华灿
2023-03-14

作为解决Hibernate OGM连接问题的一部分,我想看看我是否从Robo 3T连接。

我构建我的MongoDB映像并开始运行。

docker ps:

MacBook-Pro:GoStopHandle NOTiFY$docker ps容器ID图像
命令创建状态端口名称0375a68b9988 goStop handlemongob:最新
"docker-entrypoint. s..."5秒前上升4秒
0.0.0.0:32844-

容器的IP地址是:

docker inspect-f{{range.NetworkSettings.Networks}}{{.IPAddress}{{end}}0375a68b9988 172.17.0.2

我已经进入了“Mongo”外壳:

docker exec-it goStopHandleMongo mongo管理员

我添加用户

> db.createUser(
...   {
...     user: "NOTiFY",
...     pwd: "MyPassword",
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
...   }
... )
Successfully added user: {
    "user" : "NOTiFY",
    "roles" : [
        {
            "role" : "userAdminAnyDatabase",
            "db" : "admin"
        },
        "readWriteAnyDatabase"
    ]
}

然后设置“身份验证”:

当我尝试时

有什么建议吗?

共有3个答案

上官和惬
2023-03-14

在我的例子中,我在Mac OSX上运行docker,docker使用我的主机IP地址,结果docker检查CONTAINER_ID-格式 '{{ . 网络设置。IPAddress}}'会给我一个空字符串。Mac OSX和Windows上的Docker主机地址是host.docker.internal。因此,在将robo 3t上的主机地址设置为host.docker.internal后,我能够连接到docker中运行的mongob实例

荆乐
2023-03-14

要连接,您只需在Robo3T上连接localhost:27017。

问题源于容器的内部IP和外部IP之间的混淆。内部IP是容器在docker网络中的地址,该网络与主机网络隔离(除非明确桥接)。执行docker inspect命令时,您在docker网络上获取了容器的IP。

您的容器正在监听docker网络中的0.0.0.0:32844,并通过映射到端口27017的端口暴露给主机。因此,如果您在docker网络中有另一个容器,您应该使用172.17.0.2:32844访问您的服务。但是,如果您在docker网络之外有任何东西,您应该使用localhost:27017[您的主机IP]: 27017访问您的mongob。

希望这有帮助!

公西鸿博
2023-03-14

直到我不得不重新启动我的Mac,我才意识到我仍然有一个本地MongoDB实例在运行,因此我没有连接到我的MongoDB Docker实例,而是我的本地(Brew安装)实例。

有一次我看到@Artjom Zabelin在这里回答“不要忘记将端口映射到主机端口”

docker run --name some-mongo -p 27017:27017 -d mongo

它连接到运行我的容器的MongoDB。

我需要localhost是对的。

 类似资料:
  • 问题内容: 我正在使用docker- compose 运行一个应用程序。一切正常,通过连接到容器内的Mongo,我可以看到所有数据。但是,当我连接到RoboMongo时,我看不到任何数据。 我该如何解决这个问题? 问题答案: 您应该在Docker容器内建立到MongoDB的Robomongo SSH隧道连接。首先,您应该在docker容器中安装一个ssh服务器。 https://docs.dock

  • 我有一些docker conatiner,现在我想用ssh进入一个。我通过ssh连接到了docker容器。 但是现在我有一个问题,我不知道我可以用哪个用户访问这个容器? 我在主机(web)上的两个用户中都尝试过

  • 我无法将作为docker容器运行的应用程序连接到mongoDB。我知道新版本docker compose不推荐使用“链接”,所以我尝试使用自定义网络。我的码头工人。yml: 我的应用程序的Dockerfile: 当我运行时,我在应用程序中得到以下错误消息: 在第一次连接时连接到服务器[127.0.0.1:27017]失败[MongoNetworkError:连接ECONNREFUSED127.0.

  • 我的数据库连接是用下面的类处理的: 这是我的spring boot控制器 下面是我的dockerfile: 我读了这里和这里提到的解决方案。也阅读了一些教程,但我无法将这些解决方案中的任何一个适合我的代码。在我的代码中,我应该在哪里更改?

  • 我有zipkin服务器作为Spring Boot应用程序运行。我已经将jar导出到docker容器。 我已经探索过这个环节。

  • 问题内容: 我在将作为docker容器运行的nodeJS应用程序连接到mongoDB时遇到问题。让我解释一下到目前为止我做了什么: 如您所见,已经有一个mongo docker容器正在运行。 现在我正在运行我的nodeJS应用程序docker容器(这是来自meteorJS的构建): 在这个Docker容器中,我想通过运行以下命令来运行应用程序: 现在我得到了错误 我已经尝试通过设置以下内容来设置M