要启动容器,我输入以下命令:
sudo docker run -i -t -p 28000:27017 mongo:latest /usr/bin/mongod --smallfiles
Run Code Online (Sandbox Code Playgroud)
但是我想在这个容器中打开shell来输入mongo命令.我应该运行什么命令来做同样的事情?
vla*_*zam 119
您可以通过运行以下命令来运行交互式mongo shell:
docker run -it -p 28000:27017 --name mongoContainer mongo:latest mongo
Run Code Online (Sandbox Code Playgroud)
否则,如果您的容器已在运行,则可以使用以下exec命令:
docker exec -it mongoContainer mongo
Run Code Online (Sandbox Code Playgroud)
Ama*_*hod 17
从 Docker Hub 下载最新的 MongoDB Docker 镜像
sudo docker pull mongo
Run Code Online (Sandbox Code Playgroud)
现在设置 MongoDB 容器
docker run --name containername mongo
Run Code Online (Sandbox Code Playgroud)
通过bash shell客户端与数据库交互
docker exec -it containername bash
Run Code Online (Sandbox Code Playgroud)
启动 MongoDB shell 客户端
mongosh #now it is mongosh to access shell
Run Code Online (Sandbox Code Playgroud)
Rom*_*man 13
扩展和更新@vladzam答案,如果您的容器已经在运行docker,您可以使用带有登录和传递选项的 execmongosh命令,如下所示:
docker exec -it database-dev mongosh -u "myLogin" -p "myPass"
Run Code Online (Sandbox Code Playgroud)
小智 8
我也很努力但找到解决方案的事情:
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
Run Code Online (Sandbox Code Playgroud)
现在,您已经创建了一个运行中的Docker容器,其中包含您需要的一切。现在,如果您想使用管理员用户从任何客户端进行连接,只需运行此命令
mongo -u "user" -p "password" HOSTIP --authenticationDatabase "admin"
Run Code Online (Sandbox Code Playgroud)
这是另一种方式:打开一个新终端
mongo 127.0.0.1:28000
Run Code Online (Sandbox Code Playgroud)
你的mongo shell现在在这个终端启动.
这取决于您运行的 MongoDB 版本。
请查看此处的差异:MongoDB Shell 与旧版 mongo Shell。
例如,对于Mongo 3 ,可执行文件是mongo:
$ docker run --rm mongo:3 which mongo mongosh mongod
/usr/bin/mongo
/usr/bin/mongod
Run Code Online (Sandbox Code Playgroud)
在Mongo 5中, 和mongo都mongosh存在:
$ docker run --rm mongo:5 which mongo mongosh mongod
/usr/bin/mongo
/usr/bin/mongosh
/usr/bin/mongod
Run Code Online (Sandbox Code Playgroud)
对于Mongo 6,你只能使用最新的mongosh:
$ docker run --rm mongo:6 which mongo mongosh mongod
/usr/bin/mongosh
/usr/bin/mongod
Run Code Online (Sandbox Code Playgroud)
现在,如果您想尝试一下,请运行 MongoDB 实例:
$ docker run -d -p 29000:27017 --name mongodb-6 mongo:6
Run Code Online (Sandbox Code Playgroud)
然后连接一个外壳:
$ docker exec -it mongodb-6 mongosh
Run Code Online (Sandbox Code Playgroud)
你会得到类似的东西:
Current Mongosh Log ID: 632456e42dbc88aa0bfe612f
Connecting to: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.5.4
Using MongoDB: 6.0.1
Using Mongosh: 1.5.4
...
Run Code Online (Sandbox Code Playgroud)
您还可以传递以下选项:
$ docker exec -it mongodb-6 mongosh --version
Run Code Online (Sandbox Code Playgroud)
docker exec -it mongoContainer mongosh
Run Code Online (Sandbox Code Playgroud)
我尝试了 mongo、mongod 和 mongodb 但失败了。然后我将其更改为 mongosh 并且它有效!
| 归档时间: |
|
| 查看次数: |
54841 次 |
| 最近记录: |