【发布时间】:2015-10-05 09:01:38
【问题描述】:
要启动容器,我输入以下命令:
sudo docker run -i -t -p 28000:27017 mongo:latest /usr/bin/mongod --smallfiles
但是我想在这个容器中打开 shell 来输入 mongo 命令。 我应该运行什么命令来做同样的事情?
【问题讨论】:
要启动容器,我输入以下命令:
sudo docker run -i -t -p 28000:27017 mongo:latest /usr/bin/mongod --smallfiles
但是我想在这个容器中打开 shell 来输入 mongo 命令。 我应该运行什么命令来做同样的事情?
【问题讨论】:
您可以通过运行以下命令来运行交互式 mongo shell:
docker run -it -p 28000:27017 --name mongoContainer mongo:latest mongo
否则,如果您的容器已经在运行,您可以使用exec 命令:
docker exec -it mongoContainer mongo
【讨论】:
我也很苦恼但找到了解决办法的事情:
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 历史记录中。
从 Docker Hub 下载最新的 MongoDB Docker 镜像
sudo docker pull mongo
现在设置 MongoDB 容器
docker run --name containername mongo
通过 bash shell 客户端与数据库交互
docker exec -it containername bash
启动 MongoDB shell 客户端
mongo
【讨论】:
假设您的主机上安装了 mongo,我几年前问这个问题时就是这种情况。这是我尝试的另一种方法:打开一个新终端
mongo 127.0.0.1:28000
您的 mongo shell 现在在此终端中启动。
【讨论】:
扩展和更新 @vladzam 答案,如果您的容器已经在 docker 中运行,您可以使用带有登录和传递选项的 exec mongosh 命令:
docker exec -it database-dev mongosh -u "myLogin" -p "myPass"
【讨论】: