多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
拉取镜像 `docker pull mongo:3.6.6` 创建网络 ~~~ docker network create mongo-cluster ~~~ ![Image](https://box.kancloud.cn/f91ccecd704dac361dc230d6f07d6cdb_465x119.png) 创建3个容器 ~~~ docker run -d -p 30001:27017 --name mongo1 --net 网络ID mongo:3.6.6 mongod --replSet mongo-repliset docker run -d -p 30002:27017 --name mongo2 --net 网络ID mongo:3.6.6 mongod --replSet mongo-repliset docker run -d -p 30003:27017 --name mongo3 --net 网络ID mongo:3.6.6 mongod --replSet mongo-repliset ~~~ > 说明: > docker run > 从镜像启动一个容器 > -p 30001:27017 > 端口映射,容器内的端口 27017 映射到本机的端口 30001 > \--name mongo1 > 给这个容器起个名字 “mongo1” > \--net mongo-cluster > 把这个容器添加到网络 “mongo-cluster” > mongo > 要使用的镜像名 > mongod --replSet mongo-repliset > 容器启动后要运行的命令,执行 mongod 命令,并通过参数指定这个示例加入名为 “mongo-repliset” 的复制集 ![Image](https://box.kancloud.cn/e3878f65cfa8c4af5d2db7e7e85370e9_957x97.png) 初始化配置 随意进入一个容器: ~~~ docker exec -it mongo1 mongo > db = (new Mongo('localhost:27017')).getDB('test') test > config = { "_id" : "mongo-repliset", "members" : [ { "_id" : 0, "host" : "192.168.0.145:30001" }, { "_id" : 1, "host" : "192.168.0.145:30002" }, { "_id" : 2, "host" : "192.168.0.145:30003" } ] } 注意:host必须是外部IP+端口,否则Java(其他的我不知道)下连接集群会失败! > rs.initiate(config) ~~~ ![Image](https://box.kancloud.cn/f7690d878ad6d34734bdf88c1dc186c0_1142x472.png) ![Image](https://box.kancloud.cn/53ad2a2af9172804a91ad22090d8a95c_194x25.png)这个代表次 ![Image](https://box.kancloud.cn/d8804a04ba8ea58efed6bdb1302d9531_171x28.png) 这个代表主 * * * * * **常用命令** 添加副本集 `PRIMARY>rs.add( { host: "ip:port", priority: 10 } )` 添加/删除节点 ~~~ rs.add(“ip:port”); rs.remove(“ip:port”); ~~~ 添加冲裁节点 ~~~ rs.add(‘mongodb3.example.net:27017‘, true) ~~~ 修改优先级 ~~~ Config=rs.conf() Config.members[2].priority=10 Rs.reconfig(config) ~~~