前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker搭建MongoDB

Docker搭建MongoDB

作者头像
hbbliyong
发布2018-12-26 16:03:32
1.5K0
发布2018-12-26 16:03:32
举报
文章被收录于专栏:hbbliyonghbbliyong

1. Docker搭建Mongodb

1.1 获取docker镜像
代码语言:javascript
复制
docker pull mongo
1.2 创建mongodb容器
代码语言:javascript
复制
docker run --name  my-mongo  -p 27017:27017  -d mongo --auth

如果加需要验证就加--auth,不需要验证,就去掉。默认mongodb是不使用用户认证

1.3 进入容器设置用户
代码语言:javascript
复制
docker exec -it 容器id /bin/bash

mongo
use admin
db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})   //创建用户,此用户创建成功,则后续操作都需要用户认证
exit

或者直接进入admin

代码语言:javascript
复制
docker exec -it ly-mongo mongo admin

db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})   //创建用户,此用户创建成功,则后续操作都需要用户认证
exit
1.4 测试
代码语言:javascript
复制
mongo  宿主机ip/admin  -utest -p

查看是否连接成功

2.维护mongoDB

2.1 指定MongoDB配置文件

当我们需要修改配置文件时,我们只需要在宿主机上创建一个mongodb.conf文件,并将该文件所在的文件夹映射到容器的/data/configdb文件夹中,同时,在容器的启动命令中添加--configsvr参数即可。

代码语言:javascript
复制
docker run --name some-mongo -d mongo --configsvr
2.2 数据持久化

在使用MongoDB的容器时,数据持久化有很多种方式,下面我们将描述一种推荐的方式:

  • 在宿主机上创建一个数据存储目录,并将其映射到容器中的目录中。 这将数据库文件放在主机系统中的已知位置,并便于主机系统上的工具和应用程序访问文件。 缺点是用户需要确保目录存在,例如,主机系统上的目录权限和其他安全机制配置正确。 使用方法如下: 在宿主机中创建一个目录,例如/my/own/datadir。 如下命令启动容器:
代码语言:javascript
复制
docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo:tag
2.3 数据库授权

默认情况下,Mongo数据库没有添加认证约束,也就是说任何人只要知道数据库服务的地址和端口,就可以正常访问数据库并对数据库进行增删改查。 为了增强数据库的安全性,我们需要对数据库添加授权认证。 添加方式如下:

在启动数据库容器命令中添加--auth参数。

代码语言:javascript
复制
docker run --name some-mongo -d mongo --auth

使用exec命令进入命令行,并添加用户名和密码。

代码语言:javascript
复制
docker exec -it some-mongo mongo admin
db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
2.4 数据库备份

通常情况下,我们需要对数据库进行备份。 首先,我们需要将本地磁盘的某个文件夹映射到容器中的备份文件夹中:

代码语言:javascript
复制
docker run --name mongo -v /mnt/mongo/backup:/data/backup -d mongo

数据库备份的方式如下:

代码语言:javascript
复制
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镜像:

代码语言:javascript
复制
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

接下来,我们需要进入容器的命令行去创建用户名和密码:

代码语言:javascript
复制
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")

在运行一段时间以后,我们可以执行如下命令进行数据库备份:

代码语言:javascript
复制
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'
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Docker搭建Mongodb
    • 1.1 获取docker镜像
      • 1.2 创建mongodb容器
        • 1.3 进入容器设置用户
          • 1.4 测试
          • 2.维护mongoDB
            • 2.1 指定MongoDB配置文件
              • 2.2 数据持久化
                • 2.3 数据库授权
                  • 2.4 数据库备份
                  • 3.推荐用法
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档