0


Docker Compose部署Mongodb教程-单机

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 ****<path/to/your/image.tar.gz>**命令来加载镜像包

docker load -i mongo_4.0.27.tar.gz

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

二、创建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启动Mongodb进程日志

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

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

进入moongo,使用docker exec -it <镜像ID或镜像名称> mongo

docker exec -it master mongo

五、安全验证

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")
标签: docker 容器 运维

本文转载自: https://blog.csdn.net/JJW1002/article/details/136356972
版权归原作者 JJW1002 所有, 如有侵权,请联系我们删除。

“Docker Compose部署Mongodb教程-单机”的评论:

还没有评论