当前位置:   article > 正文

Docker Compose部署Mongodb教程-单机_docker compose mongodb

docker compose mongodb

目录

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

docker load -i mongo_4.0.27.tar.gz

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

二、创建docker-compose.yml文件

2.1 创建mongodb目录

  1. cd /usr/local
  2. mkdir mongodb

2.2 创建yml相关文件

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

三、编写配置文件

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

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

编辑docker-compose.yml

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

四、启动Mongodb

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

  1. cd /usr/local/mongodb
  2. docker-compose up -d

查看docker进程

docker ps 或 docker ps -a

查看docker启动Mongodb进程日志

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

  1. docker logs -f master
  2. docker logs --tail 200 master
  3. 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

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

5.2 设置用户账号权限

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

  1. 连接到mongo之后
  2. use test使用test集合
  3. #创建test用户账号密码
  4. db.createUser({
  5. user:"admin_test", #设置账号
  6. pwd:"test123456", #设置密码
  7. roles:[ #权限设置
  8. {role:"readWrite",db:"test"},
  9. {role:"userAdmin",db:"test"}
  10. ]
  11. })
  12. role:[
  13. 不受访问限制的超级用户: root
  14. 数据库用户角色:read、readWrite;
  15. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  16. 集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
  17. 备份恢复角色:backup、restore;
  18. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  19. 超级用户角色:root
  20. 内部角色:__system
  21. ]]
  22. read:允许用户读取指定数据库
  23. readWrite:允许用户读写指定数据库
  24. dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  25. userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
  26. clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  27. readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  28. readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  29. userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  30. dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  31. root:只在admin数据库中可用。超级账号,超级权限
  32. 2、查看用户权限
  33. db.system.users.find().pretty()
  34. db.getUsers();
  35. 3、删除用户权限
  36. db.dropUser('admin_test')
  37. 更新用户的密码
  38. db.changeUserPassword(用户名、密码)
  39. 4.查看所有数据库
  40. >show dbs;
  41. >db.user.getDB()

5.3 验证权限 

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

db.auth("admin_test","test123456")

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/716609
推荐阅读
相关标签
  

闽ICP备14008679号