1. Docker搭建Mongodb 1.1 獲取docker鏡像 1.2 創建mongodb容器 如果加需要驗證就加 auth,不需要驗證,就去掉。預設mongodb是不使用用戶認證 1.3 進入容器設置用戶 或者直接進入admin 1.4 測試 查看是否連接成功 2.維護mongoDB 2.1 ...
1. Docker搭建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 /mnt
mkdir mongodb
cd ./mongodb
mkdir data
mkdir backup
執行如下命令啟動MongoDB:
docker run --name mongo -p 27017:27017 -v /mnt/mongodb/data:/data/db -v /mnt/mongodb/backup:/data/backup -d mongo --auth
接下來,我們需要進入容器的命令行去創建用戶名和密碼:
docker exec -it mongo mongo admin
db.createUser({ user: 'jsmith', pwd: 'password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
use test;
db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]});
db.auth("testuser","testpass")
在運行一段時間以後,我們可以執行如下命令進行資料庫備份:
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'