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 命令来加载镜像包
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:值
进入moongo,使用docker exec -it 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")