Docker 部署 MongoDB 服务

拉取最新版本的 MongoDB 镜像:

bash 复制代码
$ sudo docker pull mongo:latest

在本地预先创建好 dbconfigdb 目录, 用于映射 MongoDB 容器内的 /data/db/data/configdb 目录。

使用以下命令来运行 MongoDB 容器:

shell 复制代码
$ 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 (在后台运行容器,并且打印容器ID)
    • -t (分配一个伪TTY)
    • -d (保持STDIN打开状态)
  • --name (给容器起一个名字方便管理)
  • --privileged=true (使容器内的 root 拥有真正的 root 权限)
  • -p 27017:27017 (将容器的27017端口映射到主机的27017端口)
  • -v /home/ubuntu/docker/mongo/db:/data/db (文件挂载目录)
  • -v /home/ubuntu/docker/mongo/configdb:/data/configdb (配置文件路径)
  • --auth (需要密码才能访问容器服务)

通过 docker ps 命令查看容器的运行信息:

shell 复制代码
$ 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

使用以下命令添加用户并设置密码:

shell 复制代码
$ 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 数据库:

shell 复制代码
$ 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

上面创建用户时少添加了 dbAdminAnyDatabase 角色, 所以现在修改用户的权限:

shell 复制代码
$ 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
相关推荐
专注API从业者11 分钟前
基于 Flink 的淘宝实时数据管道设计:商品详情流式处理与异构存储
大数据·前端·数据库·数据挖掘·flink
无能百分百19 分钟前
阿里云服务器ECS安装Docker(CentOS 7.x)
docker
花小璇学linux27 分钟前
imx6ull-驱动开发篇24——Linux 中断API函数
linux·驱动开发·嵌入式软件
林开落L1 小时前
库制作与原理(下)
linux·开发语言·centos·库制作与原理
小猿姐1 小时前
KubeBlocks for Milvus 揭秘
数据库·云原生
AI 嗯啦1 小时前
SQL详细语法教程(四)约束和多表查询
数据库·人工智能·sql
wxy3191 小时前
嵌入式LINUX——————TCP并发服务器
java·linux·网络
Castamere1 小时前
配置 Linux 终端 (zsh)
linux
杜子不疼.2 小时前
《Python学习之文件操作:从入门到精通》
数据库·python·学习
TDengine (老段)2 小时前
TDengine IDMP 高级功能(4. 元素引用)
大数据·数据库·人工智能·物联网·数据分析·时序数据库·tdengine