【问题标题】:How to start a mongodb shell in docker container?如何在 docker 容器中启动 mongodb shell?
【发布时间】:2015-10-05 09:01:38
【问题描述】:

要启动容器,我输入以下命令:

sudo docker run -i -t -p 28000:27017 mongo:latest /usr/bin/mongod --smallfiles

但是我想在这个容器中打开 shell 来输入 mongo 命令。 我应该运行什么命令来做同样的事情?

【问题讨论】:

    标签: mongodb docker


    【解决方案1】:

    您可以通过运行以下命令来运行交互式 mongo shell:

    docker run -it -p 28000:27017 --name mongoContainer mongo:latest mongo
    

    否则,如果您的容器已经在运行,您可以使用exec 命令:

    docker exec -it mongoContainer mongo
    

    【讨论】:

    • 错误:找不到命令:执行错误:找不到命令:-it 用法:docker [OPTIONS] COMMAND [arg...] -H=[unix:///var/run/docker .sock]: tcp://host:port 绑定/连接或 unix://path/to/socket 使用
    • 你目前安装的是什么版本的docker? exec 命令已在 1.3.0 版本中引入
    • 你需要升级,我们已经升级到 1.8 并且 docker 的管道发生了很多变化。或者使用nsentry(不确定它是否支持你的docker版本)。
    • 正如 booyaa 所说,您应该更新主机上的 docker,因为您当前使用的是不提供最新可用功能的旧版本
    • 我更新了 docker 版本,它有所帮助。非常感谢!
    【解决方案2】:

    我也很苦恼但找到了解决办法的事情:

    docker pull mongo
    docker run --name CONTAINERNAME --restart=always -d -p 8080:8080 mongo mongod --auth
    sudo docker exec -i -t CONTAINERNAME bash
    mongo
    use admin
    db.createUser({user:"user", pwd:"password", roles:[{role:"root", db:"admin"}]})
    exit && exit
    

    现在您已经创建了一个运行中的 Docker 容器,其中包含您需要的一切。现在,如果您想使用管理员用户从任何客户端连接,只需运行此

    mongo -u "user" -p "password" HOSTIP --authenticationDatabase "admin"
    

    【讨论】:

    • 作为安全预防措施,请使用-p 标志,但不要输入您的密码,因为它会出现在您的 bash / shell 历史记录中。
    【解决方案3】:

    从 Docker Hub 下载最新的 MongoDB Docker 镜像

    sudo docker pull mongo
    

    现在设置 MongoDB 容器

    docker run --name containername mongo
    

    通过 bash shell 客户端与数据库交互

    docker exec -it containername bash
    

    启动 MongoDB shell 客户端

    mongo
    

    【讨论】:

      【解决方案4】:

      假设您的主机上安装了 mongo我几年前问这个问题时就是这种情况。这是我尝试的另一种方法:打开一个新终端

      mongo 127.0.0.1:28000
      

      您的 mongo shell 现在在此终端中启动。

      【讨论】:

      • 如何“在 docker 容器中启动 mongodb shell”?
      • @qqilihq:上面提到的命令在后端启动了 mongo 容器作为守护进程。使用此命令,我能够连接到正在运行的容器,并在其中执行 mongo 查询。虽然我明白你的意思,但这个命令并没有“启动”它,它连接到已经运行的容器。
      • 此命令假定您的主机上安装了 mongo。当您在容器中运行 mongodb 时,除非您单独安装 ot,否则您的主机上不会有 mongo 可执行文件。
      • 正如其他人所说的那样,这个答案强烈假设已经在本地机器上安装了 mongo。与 Docker 无关。
      【解决方案5】:

      扩展和更新 @vladzam 答案,如果您的容器已经在 docker 中运行,您可以使用带有登录和传递选项的 exec mongosh 命令:

      docker exec -it database-dev mongosh -u "myLogin" -p "myPass"
      

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 2021-05-19
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        • 2018-03-24
        • 2016-12-17
        • 2016-12-16
        • 2017-09-11
        相关资源
        最近更新 更多