拉取镜像
docker pull mongo:latest
单机版
创建本地数据文件夹
mkdir /usr/local/mongo
mkdir /usr/local/mongo/data
创建mongo容器
docker create --name mongo-single -v /usr/local/mongo/data:/data/db -p 27017:27017 mongo:latest --auth
参数说明:
-v:挂着数据盘
–auth:需要密码才能访问容器服务
-p:端口映射
启动容器
docker start mongo-single
添加用户和设置密码
创建一个名为 admin,密码为 123456 的用户:
# 进入容器
docker exec -it mongo-single /bin/bash
# 进入 mongo
mongo
# 切换到 admin 数据库
> use admin
# 创建用户,同时拥有管理员权限
> db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] })
内建的角色说明
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')
开启外网访问
与redis的类似,默认是只允许本机的客户端访问的;需要修改配置文件,把bindIp : 127.0.0.1 注释掉
修改 mongo 配置文件
# 进入容器
docker exec -it mongo-single /bin/bash
# 在容器中更新源并且安装编辑器 vim,不然没办法修改mongod.conf.orig配置文件
apt-get update
apt-get install vim
# 改配置
vim /etc/mongod.conf.orig
mongod.conf.orig默认的配置内容:
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
也可以提前准备好配置过的 mongod.conf.orig,在创建容器的时候挂载上去;就不用进入容器修改默认的配置文件了
docker create --name mongo-single -v /usr/local/mongo/data:/data/db -v /usr/local/mongo/mongod.conf.orig:/etc/mongod.conf.orig -p 27017:27017 mongo:latest --auth
开放端口
firewall-cmd --add-port=27017/tcp --permanent
重载入添加的端口:
firewall-cmd --reload