Docker构建MongoDB

本例子使用docker-compose

首先构建一个但节点的MongoDB,接下来是一主两从的MongoDB。

单节点MongoDB

docker-compose.yml文件内容如下

version: '3.1'
services:
  singleinstance-mongo:
    image: mongo
    container_name: mongodb
    environment:
        - MONGO_INITDB_ROOT_USERNAME=root
        - MONGO_INITDB_ROOT_PASSWORD=123456
    ports:
      - "27017:27017"
    volumes:
      - "/root/data/mongodb:/data/db"
    command: mongod

执行

docker-compose up -d

查看状态

docker-compose ps
 Name               Command             State            Ports          
------------------------------------------------------------------------
mongodb   docker-entrypoint.sh mongod   Up      0.0.0.0:27017->27017/tcp

远程连接确认

mongo admin --host xxx.xxx.84.205 -u root -p 123456

其中xxx.xxx.84.205是运行docker的宿主机的IP(不是docker的ip地址)

停止MonggoDB

docker-compose stop singleinstance-mongo

创建一主两从MongoDB
优点:可进行读写分离,主节点只写,从节点只读。可提高并发效率
docker-compose.yml内容如下

version: '3.1'
services:
  rs1:
    image: mongo
    volumes:
      - /data/mongodb2/replset/rs1:/data/db
    command: mongod --dbpath /data/db --replSet myset
  rs2:
    image: mongo
    volumes:
      - /data/mongodb2/replset/rs2:/data/db
    command: mongod --dbpath /data/db --replSet myset
  rs3:
    image: mongo
    volumes:
      - /data/mongodb2/replset/rs3:/data/db
    command: mongod --dbpath /data/db --replSet myset

登入rs1,初始化节点

docker-compose exec rs1 mongo
rs.initiate()
rs.add('rs2:27017')
rs.add('rs3:27017')

查看配置以及节点信息

rs.conf() 
rs.status() 

进入节点的Mongo

docker-compose exec rs1 mongo

插入信息到主节点

docker-compose exec rs1 mongo
use test
db.test.insert({msg: 'Hello world msg from mongodb', ts: new Date()})

在从节点查看信息

docker-compose exec rs2 mongo
rs.slaveOk() //allow queries on secondary nodes
use test
db.test.find()

查看帮助

rs.help()

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理