Docker搭建MongoDB
本文内容纲要:
-1.Docker搭建Mongodb
-2.维护mongoDB
-3.推荐用法
1.Docker搭建Mongodb
1.1获取docker镜像
dockerpullmongo
1.2创建mongodb容器
dockerrun--namemy-mongo-p27017:27017-dmongo--auth
如果加需要验证就加--auth,不需要验证,就去掉。默认mongodb是不使用用户认证
1.3进入容器设置用户
dockerexec-it容器id/bin/bash
mongo
useadmin
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})//创建用户,此用户创建成功,则后续操作都需要用户认证
exit
或者直接进入admin
dockerexec-itly-mongomongoadmin
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参数即可。
dockerrun--namesome-mongo-dmongo--configsvr
2.2数据持久化
在使用MongoDB的容器时,数据持久化有很多种方式,下面我们将描述一种推荐的方式:
-
在宿主机上创建一个数据存储目录,并将其映射到容器中的目录中。
这将数据库文件放在主机系统中的已知位置,并便于主机系统上的工具和应用程序访问文件。
缺点是用户需要确保目录存在,例如,主机系统上的目录权限和其他安全机制配置正确。
使用方法如下:在宿主机中创建一个目录,例如/my/own/datadir。
如下命令启动容器:dockerrun--namesome-mongo-v/my/own/datadir:/data/db-dmongo:tag
2.3数据库授权
默认情况下,Mongo数据库没有添加认证约束,也就是说任何人只要知道数据库服务的地址和端口,就可以正常访问数据库并对数据库进行增删改查。
为了增强数据库的安全性,我们需要对数据库添加授权认证。
添加方式如下:
在启动数据库容器命令中添加--auth参数。
dockerrun--namesome-mongo-dmongo--auth
使用exec命令进入命令行,并添加用户名和密码。
dockerexec-itsome-mongomongoadmin
db.createUser({user:'jsmith',pwd:'some-initial-password',roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
2.4数据库备份
通常情况下,我们需要对数据库进行备份。
首先,我们需要将本地磁盘的某个文件夹映射到容器中的备份文件夹中:
dockerrun--namemongo-v/mnt/mongo/backup:/data/backup-dmongo
数据库备份的方式如下:
dockerexecmongosh-c'execvar=`date+%Y%m%d%H%M`&&mongodump-hlocalhost--port27017-utest-ptest1-ddbname-o/data/backup/$var_test1.dat'
3.推荐用法
执行如下命令拉取Mongo镜像:
dockerpullmongo
创建Mongo专用的文件夹:
cd/mnt
mkdirmongodb
cd./mongodb
mkdirdata
mkdirbackup
执行如下命令启动MongoDB:
dockerrun--namemongo-p27017:27017-v/mnt/mongodb/data:/data/db-v/mnt/mongodb/backup:/data/backup-dmongo--auth
接下来,我们需要进入容器的命令行去创建用户名和密码:
dockerexec-itmongomongoadmin
db.createUser({user:'jsmith',pwd:'password',roles:[{role:"userAdminAnyDatabase",db:"admin"}]});
usetest;
db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]});
db.auth("testuser","testpass")
在运行一段时间以后,我们可以执行如下命令进行数据库备份:
dockerexecmongosh-c'execvar=`date+%Y%m%d%H%M`&&mongodump-hlocalhost--port27017-ujsmith-ppassword-ddbname-o/data/backup/$var_test1.dat'
本文内容总结:1.Docker搭建Mongodb,2.维护mongoDB,3.推荐用法,
原文链接:https://www.cnblogs.com/smiler/p/10112676.html