将 Robo 3T 连接到 Docker MongoDB 容器

NOT*_*iFY 10 mongodb docker robo3t

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

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

码头工人:

MacBook-Pro:GoStopHandle NOTiFY$ docker ps 容器 ID 图像
命令创建状态端口名称 0375a68b9988 gostophandlemongodb:latest
" docker -entrypoint.s..." 5 秒前向上 4 秒
0.0.0.0:327cpStop17-MongoHandle

容器的IP地址是:

码头检查 -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 0375a68b9988 172.17.0.2

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

docker exec -it goStopHandleMongo mongo admin

我添加一个用户和密码:

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

然后我在 Robo 3T 中创建一个连接: Robo 3T - 创建连接

然后我设置了“身份验证”:

验证

当我尝试连接时,我得到:

连接对话框

有什么建议?

NOT*_*iFY 8

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

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

docker run --name some-mongo -p 27017:27017 -d mongo
Run Code Online (Sandbox Code Playgroud)

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

@Frank Yucheng Gu 是正确的,我需要“本地主机”。


Fra*_* Gu 7

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

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

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

希望这可以帮助!