Docker 是一个开源的应用容器引擎,mongo是一个非常强大的非关系型数据库,理论不多说,下面演示docker中部署最新的mongo
一:前期环境准备(node2是主,node1是从)
我环境ubuntu Server 16.04 2台,首先安装docker
sudo apt-get install docker
拉取最新mongo
docker pull mongo
二:开始部署环境
分别在两台服务器 配置ip
root@ubuntu:/home/xiaohan# export node1=192.168.153.128
root@ubuntu:/home/xiaohan# export node2=192.168.153.129
为了访问安全性,配置秘钥
openssl rand -base64 741 > mongodb-keyfile
#这里权限必须是600
chmod 600 mongodb-keyfile
chown 999 mongodb-keyfile
这里999可以改成其他的,是docker文件组赋权限
三:mongo设置用户密码
docker run --name mongo -v /home/core/mongo-files/data:/data/db -v /home/core/mongo-files:/opt/keyfile --hostname="node2.example.com" -p 27017:27017 -d mongo --smallfiles
> use admin
switched to db admin
> db.createUser({user:"mongoadmin",pwd:"mongoadmin",roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
Successfully added user: {
"user" : "mongoadmin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
> db.createUser({user:"mongoroot",pwd:"mongoroot",roles:[{role:"root",db:"admin"}]});
Successfully added user: {
"user" : "mongoroot",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
四:运行docker
docker stop mongo
docer rm mongo
docker run --name mongo -v /home/core/mongo-files/data/:/data/db -v /home/core:/opt/keyfile --hostname="node2.example.com" --add-host node1.exanple.com:${node1} --add-host node2.example.com:${node2} -p 27017:27017 -d mongo --smallfiles --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"
切换用户
use admin
db.auth("mongoroot","mongoroot")
开启副本集
rs.initate()
验证配置
rs.conf()
#mongo3.6版本这里运行两次可以看到想要的结果
在另一台机器运行
docker run --name mongo -v /home/core/mongo-files/data/:/data/db -v /home/core:/opt/keyfile --hostname="node1.example.com" --add-host node1.exanple.com:${node1} --add-host node2.example.com:${node2} -p 27017:27017 -d mongo --smallfiles --keyFile /opt/keyfile/mongodb-keyfile --replSet "rs0"
在node2上面执行
rs.add("node1.simple.com")
rs.status()
查看机制
docker logs -ft mongo
注意点:
node1,node2中ip和部署运行docker中的设置的node要对应,不然节点连接会提示HostUnreacable等很多错误,其次关于文件权限问题,注意一定是600,不要会提示没权限或权限太大
网友评论