美文网首页
Docker 部署 MongoDB 服务

Docker 部署 MongoDB 服务

作者: 何小有 | 来源:发表于2023-09-17 22:25 被阅读0次

拉取最新版本的 MongoDB 镜像:

$ sudo docker pull mongo:latest

在本地预先创建好 dbconfigdb 目录, 用于映射 MongoDB 容器内的 /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 (在后台运行容器,并且打印容器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 命令查看容器的运行信息:

$ 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

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

$ 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 数据库:

$ 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 角色, 所以现在修改用户的权限:

$ 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

相关文章

  • Docker MongoDB 配置权限登录

    在《Docker MongoDB 部署》一文中,我们了解了如何使用 Docker 部署 MongoDB,但是按照上...

  • docker部署redis5.0.3实践

    参考官方文档 -docker hub官网 docker部署mysql看这里 docker部署mongodb实践 获...

  • docker部署mongodb实践

    参考官方文档 -docker hub官网-mongodb官网 docker部署redis实践看这里docker部署...

  • Mongo 数据迁移

    迁移步骤 备份数据 还原数据docker下部署mongodb参考Docker 部署MongoDBubuntu下搭建...

  • MongoDB 副本集物理备份和恢复

    概述 MongoDB 部署在docker里,MongoDB的数据在创建docker时,通过逻辑卷进行管理和存储。当...

  • MongoDB - 副本集

    Docker部署MongoDB副本集 1.创建docker桥接网络 2.启动3个MongoDB实例,注意要指定上一...

  • 使用Docker部署Yapi

    一、 Docker部署YApi: 创建MongoDB数据卷 启动MongoDB 获取YApi镜像 初始化YApi数...

  • Win10部署Docker + mongodb + node.j

    本文主要参考了docker入门nodejs+mongodb以及Nodejs 应用简单的访问Mongodb 部署至D...

  • mongodb的单机部署

    mongodb 单点部署 官方文档: MongoDB 单点部署 服务器信息 ip系统配置目录版本172.24.32...

  • Docker MongoDB 部署

    MongoDB 是一款较为常用的NOSQL 数据库,结合 Docker 使用,能实现轻松配置部署、迁移,本文以下为...

网友评论

      本文标题:Docker 部署 MongoDB 服务

      本文链接:https://www.haomeiwen.com/subject/fagwvdtx.html