1. 查找镜像

docker search mongo 

2. 拉取镜像

docker pull mongo

3. 创建挂载目录

# 创建挂载目录
mkdir -p /usr/local/mongodb/{data,conf,log}
# 授权
chmod -R 777 /usr/local/mongodb 

4. 创建配置mongodb.conf

systemLog:
 destination: file
 path: /data/configdb/log/config.log
 logAppend: true
storage:
 dbPath: /data/configdb
 wiredTiger:
  engineConfig:
    cacheSizeGB: 0.25
net:
 port: 27017
 bindIp: 0.0.0.0
auth: true

4. 启动容器命令

docker run -d \
--name mongodb \
-p 27017:27017 \
-v /usr/local/mongodb/data:/data/db \
-v /usr/local/mongodb/log:/data/configdb/log \
-v /usr/local/mongodb/conf/mongodb.conf:/data/configdb/mongodb.conf \
mongo --auth --config /data/configdb/mongodb.conf
  • docker run -d \ # 后台运行

  • --name mongodb \ # 容器名称

  • -p 27017:27017 \ # 端口映射

  • -v /usr/local/mongodb/data:/data/db \ # 挂载数据目录

  • -v /usr/local/mongodb/log:/data/configdb/log \ # 挂载日志目录

  • -v /usr/local/mongodb/conf:/data/configdb \ # 挂载配置目录

  • mongo --auth --config /data/configdb/mongodb.conf # 开启用户认证,以及自定义.conf

5. 配置mongo账号密码

# 进入容器
docker exec -it mongodb /bin/bash
# 进入mongo
mongosh

# 或者
docker exec -it mongodb mongosh

使用admin数据库

use admin

创建dba账户

db.createUser({ user:'dbadmin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
权限说明
read允许用户读取指定数据库
readWrite允许用户读写指定数据库
dbAdmin允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root只在admin数据库中可用。超级账号,超级权限

校验账户

db.auth("dbadmin","123456")