使用 mongodb compass GUI 连接到 docker 内的 Mongodb

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

我有一个 mongodb 数据库在 docker 容器中的默认端口 27017 上运行。

有没有办法使用在我的 ubuntu 操作系统上本机运行的 mongodb compass GUI 连接到数据库?

database mongodb docker localhost
13个回答
37
投票

docker run -p 27018:27017
,然后从主机上的 Compass 使用端口 27018 连接。我不认为有理由公开所有端口。


16
投票

将连接字符串中的

localhost
替换为您的IP地址,例如,我的IP地址是10.1.2.123,那么我就有
mongodb://10.1.2.123:27017?readPreference=primary&appname=MongoDB%20Compass&ssl=false

在这里看到这个👆:https://nickjanetakis.com/blog/docker-tip-35-connect-to-a-database-running-on-your-docker-host


15
投票

使用 docker-compose 你只需要公开端口

27017
。当您在 GUI 中点击“连接”时,它会自动检测此连接。

version: "3"
services:
  mongo-database:
    container_name: mongo-database
    image: mongo:4
    ports:
      - 27017:27017

7
投票

是的,我们可以跑

步骤:

  1. 拉取/重启docker容器mongodb

  2. 进入bash shell

    docker exec -it mongodb bash
    
  3. 现在打开 mongodb compass 社区,使用相同的默认连接,只需单击连接,docker 容器的 mongodb 将连接到 compass 社区。

我的终端运行 docker:
My terminal running docker

Mongodb 指南针:
Mongodb Compass


6
投票

使用 dockerspect 或 dockerdesktop 检查并找到暴露的端口

docker inspect your_container_name

并找到此部分

       "Ports": {
            "27017/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "27012"
                }
            ]
        },

然后使用此 url 字符串进行连接

mongodb://localhost:27012/?readPreference=primary&appname=MongoDB%20Compass&ssl=false

如果您正在使用副本集名称,请不要传入副本集名称,否则连接将失败。这是如果您部署了副本集而不是将独立版本转换为副本集。

如果您不知道如何部署副本集,请发表评论,我可以留下 docker-compose 文件来设置和部署副本集。


2
投票

我可以在最后使用这些标签将 Windows 上的指南针连接到 docker:

mongodb://user:password@localhost:27017/dbname?authSource=dbname&readPreference=primary&gssapiServiceName=mongodb&appname=MongoDB%20Compass&ssl=false


1
投票

如果您使用过类似的环境,只需打开指南针并在内部连接中添加凭据即可

ME_CONFIG_MONGODB_ADMINUSERNAME=admin

然后点击连接。无需额外设置。 或者您可以使用 mongo-express,它是一个基于 Web 的 monodb UI 工具。


1
投票

运行命令

sudo docker ps
它将显示您拥有的 docker 容器,您可以在其中找到 mongodb 的端口号 运行命令
sudo mongodb-compass
它将打开 mongodb 指南针

如果您在本地连接,则一般主机名是:localhost 然后只需输入端口号并单击connect


1
投票

我在使用 Compass 连接到本地 MongoDB 时也遇到了问题,但发现这是 SSL 问题。默认情况下,Compass 将 SSL 设置为“系统 CA”。但是,如果您尝试使用 dockerized Mongo,您的 Mongo 日志将显示以下错误:

Error receiving request from client: SSLHandshakeFailed: SSL handshake received but server is started without SSL support. Ending connection from 172.17.0.1:45902 (connection id: 12)
end connection 172.17.0.1:45902 (0 connections now open)

因此,要连接,我必须单击“单独填写连接字段”,然后将 SSL 字段设置为“无”。作为参考,我使用以下命令运行 Mongo:

docker run -p 27017:27017 --name some-mongo mongo:4.0
。无需身份验证。


1
投票

这个解决方案对我有用。

使用以下命令运行 docker 容器:

docker run -d --name mongo-db -v ~/mongo/data:/data/db -p 27017:27017 mongo

-v 用于将本地卷映射到docker可写空间。即使容器被破坏,这也将保留数据。

MongoDB 连接字符串 Compass GUI:

mongodb://localhost:27017


0
投票

使用“publish-all-ports”选项运行 mongo 容器 (

docker run -P
)。然后您应该能够通过
docker ps -a
检查暴露给主机的端口并从 Compass 连接到它(只需使用您的主机名:
localhost
和端口:
<exposed port>
)。


0
投票

使用 --net=host 选项让 Docker 容器与主机共享其网络命名空间。

docker run -it --net=host -v mongo_volume:/data/db --name mongo_example4 -d mongo

现在我们可以使用 mongodb://localhost:27017

连接 mongodb 和指南针

另一只手进行连接,只需使用 docker inform 命令获取 docker 容器 IP 地址并使用该 IP 地址而不是 localhost

mongodb://172.17.0.2:27017


0
投票

首先下载最新版本的mongodb/mongodb-community-server:latest

docker pull mongodb/mongodb-community-server:latest

然后运行以下命令

docker run --name local_mongo -p 27017:27017 -d mongodb/mongodb-community-server:latest

然后从这里下载 MongoDB Compass UI:https://www.mongodb.com/try/download/compass

打开它并传递以下连接字符串:

mongodb://localhost:27017/
© www.soinside.com 2019 - 2024. All rights reserved.