簡體   English   中英

如何在docker容器中啟動一個mongodb shell?

[英]How to start a mongodb shell in docker container?

要啟動容器,我輸入以下命令:

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"

這是另一種方式:打開一個新終端

mongo 127.0.0.1:28000

你的mongo shell現在在這個終端啟動。

擴展和更新@vladzam答案,如果您的容器已經在docker中運行,您可以使用帶有登錄和傳遞選項的 exec mongosh命令,如下所示:

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

從 Docker Hub 下載最新的 MongoDB Docker 映像

sudo docker pull mongo

現在設置 MongoDB 容器

docker run --name containername mongo

通過 bash shell 客戶端與數據庫交互

docker exec -it containername bash

啟動 MongoDB shell 客戶端

mongo

這取決於您運行的是哪個版本的 MongoDB。

請在此處查看差異: MongoDB Shell 與 Legacy mongo Shell

例如,對於Mongo 3 ,可執行文件是mongo

$ docker run --rm mongo:3 which mongo mongosh mongod
/usr/bin/mongo
/usr/bin/mongod

Mongo 5中, mongomongosh都存在:

$ docker run --rm mongo:5 which mongo mongosh mongod
/usr/bin/mongo
/usr/bin/mongosh
/usr/bin/mongod

使用Mongo 6 ,您只能使用最新的mongosh

$ docker run --rm mongo:6 which mongo mongosh mongod
/usr/bin/mongosh
/usr/bin/mongod

現在,如果您想嘗試一下,請運行 MongoDB 實例:

$ docker run -d -p 29000:27017 --name mongodb-6 mongo:6

然后連接一個shell:

$ docker exec -it mongodb-6 mongosh

你會得到類似的東西:

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
...

您還可以傳遞以下選項:

$ docker exec -it mongodb-6 mongosh --version
docker exec -it mongoContainer mongosh

我嘗試了 mongo、mongod 和 mongodb 但失敗了。 然后我將其更改為 mongosh 並且它有效!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM