拉取最新版本的 MongoDB 鏡像:
$ sudo docker pull mongo:latest
在本地預(yù)先創(chuàng)建好 db
和 configdb
目錄, 用于映射 MongoDB 容器內(nèi)的 /data/db
和 /data/configdb
目錄刹缝。
使用以下命令來運行 MongoDB 容器:
$ sudo docker run -itd --name mongo --privileged=true -p 27017:27017 -v /home/ubuntu/docker/mongo/db:/data/db -v /home/ubuntu/docker/mongo/configdb:/data/configdb docker.io/mongo:latest --auth
-
-itd
-
-i
(以交互模式運行容器, 通常與 -t 同時使用) -
-t
(為容器分配一個偽輸入終端, 通常與 -i 同時使用) -
-d
(后臺運行容器)
-
-
--name
(給容器起一個名字方便管理) -
--privileged=true
(使容器內(nèi)的 root 擁有真正的 root 權(quán)限) -
-p 27017:27017
(將容器的27017端口映射到主機的27017端口) -
-v /home/ubuntu/docker/mongo/db:/data/db
(文件掛載目錄) -
-v /home/ubuntu/docker/mongo/configdb:/data/configdb
(配置文件路徑) -
--auth
(需要密碼才能訪問容器服務(wù))
通過 docker ps
命令查看容器的運行信息:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b0fb7817a762 mongo:latest "docker-entrypoint.s…" 50 seconds ago Up 50 seconds 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp mongo
使用以下命令添加用戶并設(shè)置密碼:
$ sudo docker exec -it mongo mongosh admin
Current Mongosh Log ID: 65085540d0acf268bdf76e9c
Connecting to: mongodb://127.0.0.1:27017/admin?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.10.6
Using MongoDB: 7.0.1
Using Mongosh: 1.10.6
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy).
You can opt-out by running the disableTelemetry() command.
admin> db.createUser({user:'admin', pwd:'用戶admin的密碼', roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'readWriteAnyDatabase',db:'admin'}]});
{ ok: 1 }
admin> db.auth('admin', '用戶admin的密碼')
{ ok: 1 }
admin> exit
使用 mongosh
連接和斷開 MongoDB 數(shù)據(jù)庫:
$ sudo docker exec -it mongo mongosh --port 27017 -u 'admin' -p '用戶admin的密碼' --authenticationDatabase 'admin'
Current Mongosh Log ID: 65085721cfe61730ead44cfd
Connecting to: mongodb://<credentials>@127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&authSource=admin&appName=mongosh+1.10.6
Using MongoDB: 7.0.1
Using Mongosh: 1.10.6
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
test> exit
上面創(chuàng)建用戶時少添加了 dbAdminAnyDatabase
角色, 所以現(xiàn)在修改用戶的權(quán)限:
$ sudo docker exec -it mongo mongosh admin
Current Mongosh Log ID: 6508588447e7463f155ee1da
Connecting to: mongodb://127.0.0.1:27017/admin?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.10.6
Using MongoDB: 7.0.1
Using Mongosh: 1.10.6
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
admin> db.auth('admin', '用戶admin的密碼')
{ ok: 1 }
admin> db.updateUser('admin', {roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'readWriteAnyDatabase',db:'admin'},{role:'dbAdminAnyDatabase',db:'admin'}]});
{ ok: 1 }
admin> exit