Docker Compose部署Mongodb教程-单机

2024-07-14 1530阅读

目录

一、拉取Mongodb镜像

1.1 使用docker命令拉取Mongodb镜像

二、创建docker-compose.yml文件

2.1 创建mongodb目录

2.2 创建yml相关文件

三、编写配置文件

四、启动Mongodb

五、安全验证

5.1  开启安全验证

5.2 设置用户账号权限

5.3 验证权限 

 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,我们使用Docker Compose来部署mongodb更方便快捷,也更容易方便管理。

首先需要在目标机器上安装Docker和Docker Compose。如果你已经安装过了,可以跳过这一步。

一、拉取Mongodb镜像

1.1 使用docker命令拉取Mongodb镜像

我这里版本4.0.27为例:

docker pull mongo:4.0.27

如果镜像下载失败,可离线下载到mongodb的镜像包mongo_4.0.27.tar.gz,然后上传到部署的服务器中使用docker load -i 命令来加载镜像包

docker load -i mongo_4.0.27.tar.gz

完成之后可使用docker images 命令查看docker中的镜像包

Docker Compose部署Mongodb教程-单机

二、创建docker-compose.yml文件

2.1 创建mongodb目录

cd /usr/local
mkdir mongodb

2.2 创建yml相关文件

在mongodb目录中创建docker-compose.yml文件,.env文件,data目录
touch docker-compose.yml
touch .env
mkdir data

三、编写配置文件

编辑.env文件(.env文件用于存放mongodb的版本号)

vi .env
输入以下内容保存
mongo_v=mongo:4.0.27

编辑docker-compose.yml

version: '2.1'
services:
  secondary:
     image: ${mongo_v} #镜像版本号
     container_name: master #镜像名称可自己定义
     restart: always
     ports:
       - "0.0.0.0:27017:27017"
     volumes:
       - ./data:/data/db #数据目录挂载路径
      command: mongod --dbpath /data/db --oplogSize 128 #mongodb基本配置,如需安全验证则在这里加 --auth表示登录mongo需要账号密码

四、启动Mongodb

需进入到docker-compose.yml的目录使用命令docker-compose up -d 启动

cd /usr/local/mongodb
docker-compose up -d

查看docker进程

docker ps 或 docker ps -a

Docker Compose部署Mongodb教程-单机

查看docker启动Mongodb进程日志

使用命令docker logs -f 镜像ID 或 镜像名称 (查看指定200行日志 docker logs --tail 200 镜像ID 或 镜像名称)

docker logs -f master
docker logs --tail 200 master
master为yml中container_name:值

进入moongo,使用docker exec -it mongo

docker exec -it master mongo

Docker Compose部署Mongodb教程-单机

五、安全验证

5.1  开启安全验证

在docker-compose.yml中配置安全验证在yml中  command: mongod --dbpath /data/db --oplogSize 128 后面加上--auth

version: '2.1'
services:
  secondary:
     image: ${mongo_v} #镜像版本号
     container_name: master #镜像名称可自己定义
     restart: always
     ports:
       - "0.0.0.0:27017:27017"
     volumes:
       - ./data:/data/db #数据目录挂载路径
      command: mongod --dbpath /data/db --oplogSize 128 --auth

5.2 设置用户账号权限

可参考官方文档:What is MongoDB? — MongoDB Manual

连接到mongo之后
use test使用test集合
#创建test用户账号密码
db.createUser({
    user:"admin_test", #设置账号
    pwd:"test123456", #设置密码
    roles:[  #权限设置 
        {role:"readWrite",db:"test"},
         {role:"userAdmin",db:"test"}
    ]
})
role:[
不受访问限制的超级用户: root
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system
]]
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
2、查看用户权限
db.system.users.find().pretty()
db.getUsers();
3、删除用户权限
db.dropUser('admin_test')
更新用户的密码
db.changeUserPassword(用户名、密码)
4.查看所有数据库
>show dbs;
>db.user.getDB()

5.3 验证权限 

在mongodb容器中使用db.auth("账号","密码")执行返回结果为1表示验证成功,否则失败

db.auth("admin_test","test123456")
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]