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'
来源: http://www.linuxidc.com/Linux/2018-12/155832.htm