拉取鏡像
`docker pull mongo:3.6.6`
創建網絡
~~~
docker network create mongo-cluster
~~~

創建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” 的復制集

初始化配置
隨意進入一個容器:
~~~
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)
~~~

這個代表次
 這個代表主
* * * * *
**常用命令**
添加副本集
`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)
~~~