如何允许mongo docker容器进行远程连接

Cra*_*igH 4 mongodb

我正在使用官方的mongodb docker容器.我想从端口27017上的主机连接到mongodb容器.我运行容器,暴露了这些端口

-p 27017:27017

我无法连接(连接被拒绝),我相信它,因为mongo conf文件未配置为允许远程连接.如何配置允许?官方容器没有安装vi/nano来修改图像.

我可以通过创建链接从另一个容器连接到mongodb - 但这不是我的愿望

San*_*san 6

更好的解决方案:
https ://blog.madisonhub.org/setting-up-a-mongodb-server-with-auth-on-docker/ https://docs.mongodb.com/v2.6/tutorial/add -user管理员/

我对另一个问题的回答.如何通过Docker在MongoDB上启用身份验证?

这就是我为同样的问题所做的,并且它起作用了.

  1. 在服务器上运行mongo docker实例

    docker run -d -p 27017:27017 -v ~/dataMongo:/data/db mongo
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在正在运行的docker实例上打开bash.

    docker ps
    
    Run Code Online (Sandbox Code Playgroud)

    容器IDIMAGE命令创建状态端口名称

    b07599e429fb mongo"docker-entrypoint ..."35分钟前上涨35分钟0.0.0.0:27017->27017/tcp musing_stallman

    docker exec -it b07599e429fb bash
    root@b07599e429fb:/#
    
    Run Code Online (Sandbox Code Playgroud)

    参考 - https://github.com/arunoda/meteor-up-legacy/wiki/Accessing-the-running-Mongodb-docker-container-from-command-line-on-EC2

  3. 键入mongo输入mongo shell.

    root@b07599e429fb:/# mongo
    
    Run Code Online (Sandbox Code Playgroud)
  4. 对于此示例,我将设置一个名为ian的用户,并为该用户提供对cool_db数据库的读写访问权限.

    > use cool_db
    
    > db.createUser({
        user: 'ian',
        pwd: 'secretPassword',
        roles: [{ role: 'readWrite', db:'cool_db'}]
    })
    
    Run Code Online (Sandbox Code Playgroud)

    参考:https://ianlondon.github.io/blog/mongodb-auth/(仅限第一点)

  5. 从mongod shell和bash退出.

  6. 现在运行启用了auth的mongo docker.

    docker run -d -p 27017:27017 -v ~/dataMongo:/data/db mongo mongod --auth
    
    Run Code Online (Sandbox Code Playgroud)

    参考:如何通过Docker在MongoDB上启用身份验证?(Usman Ismail对这个问题的回答)

  7. 我能够使用以下命令从本地Windows笔记本电脑连接到在Google云服务器上运行的实例.

    mongo <ip>:27017/cool_db -u ian -p secretPassword
    
    Run Code Online (Sandbox Code Playgroud)

    参考:如何从Mac OS终端连接到远程mongo服务器

  • 非常好的东西,当然确实有效。尽管如此,恕我直言,一开始真的值得一提,它不适用于最新的 Mongo 版本(3.6 是目前最新的版本,适用于 3.4)。[此处](/sf/answers/3040913361/) 对此进行了评论。它将帮助其他人节省宝贵的时间。 (2认同)