Docker构建MongoDB

12次阅读

共计 1413 个字符,预计需要花费 4 分钟才能阅读完成。

本例子使用 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()

正文完
 0