Docker搭建Mongodb


1. 部署Mongodb

1.1 獲取docker鏡像

docker pull mongo

1.2 創建mongodb容器

docker run --name my-mongo -p 27017:27017 -d mongo --auth

如果加需要驗證就加--auth,不需要驗證,就去掉。默認mongodb是不使用用戶認證

1.3 進入容器設置用戶

docker exec -it 容器id /bin/bash mongo use admin db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]}) //創建用戶,此用戶創建成功,則后續操作都需要用戶認證 exit

或者直接進入admin

docker exec -it ly-mongo mongo admin

db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]}) //創建用戶,此用戶創建成功,則后續操作都需要用戶認證 exit 

1.4 測試

mongo 宿主機ip/admin -utest -p

查看是否連接成功

 

2.維護mongoDB

2.1 指定MongoDB配置文件

當我們需要修改配置文件時,我們只需要在宿主機上創建一個mongodb.conf文件,並將該文件所在的文件夾映射到容器的/data/configdb文件夾中,同時,在容器的啟動命令中添加--configsvr參數即可。

docker run --name some-mongo -d mongo --configsvr

2.2 數據持久化

在使用MongoDB的容器時,數據持久化有很多種方式,下面我們將描述一種推薦的方式:

  • 在宿主機上創建一個數據存儲目錄,並將其映射到容器中的目錄中。
    這將數據庫文件放在主機系統中的已知位置,並便於主機系統上的工具和應用程序訪問文件。
    缺點是用戶需要確保目錄存在,例如,主機系統上的目錄權限和其他安全機制配置正確。
    使用方法如下:

    在宿主機中創建一個目錄,例如/my/own/datadir。
    如下命令啟動容器:

docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo:tag

2.3 數據庫授權

默認情況下,Mongo數據庫沒有添加認證約束,也就是說任何人只要知道數據庫服務的地址和端口,就可以正常訪問數據庫並對數據庫進行增刪改查。
為了增強數據庫的安全性,我們需要對數據庫添加授權認證。
添加方式如下:

在啟動數據庫容器命令中添加--auth參數。

docker run --name some-mongo -d mongo --auth

使用exec命令進入命令行,並添加用戶名和密碼。

docker exec -it some-mongo mongo admin db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

2.4 數據庫備份

通常情況下,我們需要對數據庫進行備份。
首先,我們需要將本地磁盤的某個文件夾映射到容器中的備份文件夾中:

docker run --name mongo -v /mnt/mongo/backup:/data/backup -d mongo

數據庫備份的方式如下:

docker exec mongo sh -c 'exec var=`date +%Y%m%d%H%M` && mongodump -h localhost --port 27017 -u test -p test1 -d dbname -o /data/backup/$var_test1.dat'

 

3.實際使用步驟(推薦用法)

執行如下命令拉取Mongo鏡像:

docker pull mongo
創建Mongo專用的文件夾:

cd /opt
mkdir mongodb
cd ./mongodb
mkdir data
mkdir backup
執行如下命令啟動MongoDB:

docker run --name mongo -p 27017:27017 -v /opt/mongodb/data:/data/db -v /opt/mongodb/backup:/data/backup -d mongo --auth

接下來,我們需要進入容器的命令行去創建用戶名和密碼:

docker exec -it mongo mongo admin db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
db.auth("admin","admin123456"); use test; db.createUser({user:"test",pwd:"123456",roles:["readWrite"]}); db.auth("test","123456")

在運行一段時間以后,我們可以執行如下命令進行數據庫備份:

docker exec mongo sh -c 'exec var=`date +%Y%m%d%H%M` && mongodump -h localhost --port 27017 -u jsmith -p password -d dbname -o /data/backup/$var_test1.dat'
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM