【Docker】之安装MongoDB
安装mongodb
获取MongoDB镜像
docker pull mongo:5.0.6
本地创建数据库目录
mkdir -p /root/dockerdata/mongo/{data,configdb,backup,logs}
sudo chmod 777 -R /root/dockerdata/mongo
创建 mongodb配置文件
创建 mongo.conf配置文件
cd /root/dockerdata/mongo/configdb
vi mongo.conf
port = 27017
dbpath=/data/db
maxConns = 10000
auth = true
bind_ip = 0.0.0.0
logpath=/data/log/mongo.log
logappend=true
objcheck = true
运行容器
docker run -d --restart=always \
--privileged=true \
-p 27017:27017 \
--net mynet --ip 172.172.0.9 \
--name mymongo \
-v /root/dockerdata/mongo/logs:/data/log/ \
-v /root/dockerdata/mongo/data:/data/db \
-v /root/dockerdata/mongo/backup:/data/backup
-v /root/dockerdata/mongo/configdb:/data/configdb \
-v /root/dockerdata/mongo/configdb/mongo.conf:/data/configdb/mongo.conf \
-e MONGODB_INITDB_ROOT_USERNAME=admin \
-e MONGODB_INITDB_ROOT_PASSWORD=12345678 \
-d mongo:5.0.6 --auth --bind_ip_all
# 如果想要使用配置文件启动mongodb,则执行自己的启动命令:
docker run -d --restart=always \
--privileged=true \
-p 27017:27017 \
--net mynet --ip 172.172.0.9 \
--name mymongo \
-v /root/dockerdata/mongo/logs:/data/log/ \
-v /root/dockerdata/mongo/data:/data/db \
-v /root/dockerdata/mongo/backup:/data/backup
-v /root/dockerdata/mongo/configdb:/data/configdb \
-v /root/dockerdata/mongo/configdb/mongo.conf:/data/configdb/mongo.conf \
-e MONGODB_INITDB_ROOT_USERNAME=admin \
-e MONGODB_INITDB_ROOT_PASSWORD=12345678 \
-d mongo:5.0.6 \
mongod -f /data/configdb/mongo.conf --auth --bind_ip_all
记住:自己的mongod启动命令是在容器内执行的,因此使用的配置文件路径是相对于容器的内部路径。
创建mongoDb用户
#进入mongoDb容器,创建管理员
docker exec -it mongoDb bash
#进入mongoDb
mongo
> use admin
switched to db admin
> db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]});
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
> db.auth('admin','123456') # 认证
#出现创建成功提示就对了,退出管理员
> exit;
#用刚创建的管理用户登录在创建个普通用户
mongo --port 27017 -u admin -p admin --authenticationDatabase admin
> use test
switched to db test
> db.createUser({user:"tester",pwd:"tester",roles:[{role:"readWrite",db:"test"}]});
Successfully added user: {
"user" : "tester",
"roles" : [
{
"role" : "readWrite",
"db" : "test"
}
]
}
> exit
mongoDb用户角色权限说明
角色说明
至此mongoDb数据库据安装好了,可以愉快的玩耍使用了
mongodb副本集
一个最小的副本集为3个成员,包括主节点,备节点和仲裁节点,如果没有仲裁节点,备节点是不会自动升级为主节点的。
创建mongodb节点
# 创建一个网络
docker network create tms
docker run --name m1 -p 27001:27017 --network tms --network-alias m1 -d mongo:5.0.6 --replSet mset --bind_ip 0.0.0.0
docker run --name m2 -p 27002:27017 --network tms --network-alias m2 -d mongo:5.0.6 --replSet mset --bind_ip 0.0.0.0
docker run --name m3 -p 27003:27017 --network tms --network-alias m3 -d mongo:5.0.6 --replSet mset --bind_ip 0.0.0.0
注意一定要将bind_ip设置成不是只有本地访问,否则副本集不能初始化成功。
配置节点
rs.initiate({ _id:"mset", members:[
{_id:0,host:"m1:27017",priority:2}, {_id:1,host:"m2:27017",priority:1}, {_id:2,host:"m3:27017",arbiterOnly:true}
]})
priority:设置优先级,数字越大优先级越高,优先级最高的是主节点
rs.status() # 查看状态
# 默认备份节点不能读写,可以设置
rs.slaveOk();
# 增加节点,需要进入主节点执行
rs.add('ip:port')
创建用户
use admin
db.createUser({
user:'admin',
pwd:'123456',
roles:[{role:'root',db:'admin'}],
})
db.auth('admin','123456')
开启认证
如果需要开启认证,使用ssl的keyfile文件作为认证文件:
openssl rand -base64 666 > mongodb.key # 生成认证文件
chmod 600 mongodb.key # 设置执行权限
- 设置配置文件
# /mnt/mongodb/mconf/mongod.conf net: port: 27017 bindIp: 0.0.0.0 systemLog: logAppend: true processManagement: fork: false security: keyFile: "/data/configdb/mongodb.key" clusterAuthMode: "keyFile" authorization: "enabled" replication: replSetName: "mset" secondaryIndexPrefetch: "all"
- 启动容器
docker run --name m1 -p 27001:27017 -v /mnt/mongodb/mconf:/data/configdb --network tms --network-alias m1 -d mongo:5.0.6 mongod -f /data/configdb/mongod.conf docker run --name m2 -p 27002:27017 -v /mnt/mongodb/mconf:/data/configdb --network tms --network-alias m2 -d mongo:5.0.6 mongod -f /data/configdb/mongod.conf docker run --name m3 -p 27003:27017 -v /mnt/mongodb/mconf:/data/configdb --network tms --network-alias m3 -d mongo:5.0.6 mongod -f /data/configdb/mongod.conf
PS
mongodb://10.211.55.81:27017
mongodb://leeze:leeze@10.211.55.81:27017/?authSource=flux
#更新源
apt-get update
# 安装
vim apt-get install vim
# 修改 mongo 配置文件
vim /etc/mongod.conf.orig