docker-compose安裝mongodb說明

1. docker安裝mongodb說明

1.1. 配置docker-compose.yml

mongod.conf內(nèi)容如下,一般只需要修改wiredTiger.engineConfig.cacheSizeGB,具體大小請查考官方文檔

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /data/db
  journal:
    enabled: true
  directoryPerDB: true
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 8
      directoryForIndexes: true

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#replication:
replication:
   oplogSizeMB: 51200
   replSetName: rs0

創(chuàng)建文件夾用來持久化數(shù)據(jù)

# db存放數(shù)據(jù)庫文件,log存放mongodb日志,config存放mongodb配置文件
mkdir db log config
# 由于log文件夾需要被容器讀寫,所以要授權
chmod 777 -R log

目前是副本集模式,需要拷貝該文件,修改其中container_name, portsvolumes

version: '3.8'

services:
  mongo:
    image: mongo
    container_name: mongo1
    restart: always
    command: --config /etc/mongo/mongod.conf
    ports:
      - 27001:27017
    volumes:
      # 掛載數(shù)據(jù)目錄
      - /home/docker-compose/mongo1/db:/data/db
      # 掛載日志目錄
      - /home/docker-compose/mongo1/log:/var/log/mongodb
      # 掛載配置目錄
      - /home/docker-compose/mongo1/config:/etc/mongo

1.2. 啟動程序

mongodb部署在172.17.0.3:/home/docker-compose

# 程序后臺啟動
docker-compose up -d

1.3. 配置副本集

使用mongo連接服務器

./mongo --port 27001

進入mongodb后,使用命令設置副本集成員
_id也就是副本集名稱在mongod.conf指定了

rs.initiate( {
   _id : "rs0",
   members: [
      { _id: 0, host: "172.17.0.3:27001" },
      { _id: 1, host: "172.17.0.3:27002" },
      { _id: 2, host: "172.17.0.3:27003", arbiterOnly: true }
   ]
})
// 查看目前節(jié)點的屬性,一般為PRIMARY,SECONDARY和ARBITER三種
rs.status()

1.4. 開啟用戶權限配置

1.4.1. 創(chuàng)建用戶

./mongo --port 27001
# 切換到admin數(shù)據(jù)庫,做授權
use admin
# 查看內(nèi)建的角色
show roles
db.createUser({user:"root", pwd: "admin#123", roles: [{role: "root", db: "admin"}]})

1.4.2. 停止節(jié)點

使用docker-compose stop命令依次停止從節(jié)點mongo2,仲裁節(jié)點mongo3,主節(jié)點mongo1

1.4.3. 創(chuàng)建節(jié)點間認證文件

根據(jù)官方文檔所述,副本集和分片集群間的節(jié)點之間需要認證。

Replica sets and sharded clusters require internal authentication between members when access control is enabled.
For more details, please see Internal/Membership Authentication.

# 使用openssl在當前目錄生成keyfile
openssl rand -base64 756 > keyfile
# 因為該文件是root用戶創(chuàng)建,所以要變更用戶為mongodb用戶systemd-coredump和讀權限
# 如果權限過大,mongodb啟動后會報錯permissions on XXXX are too open
chmod 400 keyfile
chown systemd-coredump keyfile
# 將該文件拷貝到其他mongodb節(jié)點上
cp keyfile /home/docker-compose/mongo1/config/
cp keyfile /home/docker-compose/mongo2/config/
cp keyfile /home/docker-compose/mongo3/config/

1.4.4. 修改mongod.conf配置

添加以下內(nèi)容

security:
  keyFile: /etc/mongo/keyfile
  authorization: enabled

1.4.5. 重新啟動副本集

使用docker-compose start命令依次啟動主節(jié)點mongo1,仲裁節(jié)點mongo3和從節(jié)點mongo2

1.5. 停止程序

# 停止容器并刪除容器
docker-compose down

1.6. 升級程序

# 停止程序并刪除鏡像
docker-compose down --rmi all
# 拉取新的鏡像
docker-compose pull
# 啟動程序
docker-compose up -d

1.7. 卸載程序

要想完全卸載,需要刪除docker鏡像和數(shù)據(jù)

# 停止容器并刪除容器、鏡像
docker-compose down --rmi all
# 刪除鏡像
docker rmi mongo
# 刪除本地文件
rm -r /home/docker-compose/mongo1

1.8. 參考資料

  1. dockerhub上mongo頁面
  2. mongodb官方文檔
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容