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'

Docker搭建MongoDB的更多相关文章

  1. ubuntu docker 搭建 mongodb,开启授权访问 redis,mysql mssql 备份还原

    命令安装docker 如果您想从Ubuntu存储库安装docker版本,则可以运行下面的apt命令. sudo apt install docker.io等到安装完成后,您可以启动Docker并使用s ...

  2. 【译文】用Spring Cloud和Docker搭建微服务平台

    by Kenny Bastani Sunday, July 12, 2015 转自:http://www.kennybastani.com/2015/07/spring-cloud-docker-mi ...

  3. Docker01 centos系统安装、centos安装docker、docker安装mongoDB

    1 centos系统安装 本博文是基于 centos6.5 的,利用VMware 虚拟机搭建 centos6.5 系统 1.1 centos6.5资源获取 1.2 安装 1.2.1 新建虚拟机 1.2 ...

  4. Spring Cloud和Docker搭建微服务平台

    用Spring Cloud和Docker搭建微服务平台 This blog series will introduce you to some of the foundational concepts ...

  5. 实战:docker搭建FastDFS文件系统并集成SpringBoot

    实战:docker搭建FastDFS文件系统并集成SpringBoot 前言 15年的时候,那时候云存储还远远没有现在使用的这么广泛,归根结底就是成本和安全问题,记得那时候我待的公司是做建站开发的,前 ...

  6. 搭建mongodb集群(副本集+分片)

    搭建mongodb集群(副本集+分片) 转载自:http://blog.csdn.net/bluejoe2000/article/details/41323051 完整的搭建mongodb集群(副本集 ...

  7. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  8. 使用 Docker 搭建 Java Web 运行环境

    黄勇的博客 Docker 是 2014 年最为火爆的技术之一,几乎所有的程序员都听说过它.Docker 是一种“轻量级”容器技术,它几乎动摇了传统虚拟化技术的地位,现在国内外已经有越来越多的公司开始逐 ...

  9. 搭建mongodb分片

    搭建mongodb分片 http://gong1208.iteye.com/blog/1622078 Sharding分片概念 这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在shardi ...

随机推荐

  1. [bzoj1059]矩阵游戏

    虽然是一道水难题,但是我这种蒟蒻还是要讲一讲的. Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N *N黑白方阵进行(如同国际 ...

  2. hello1和hello2代码分析

    1.hello1代码分析 hello.java package javaeetutorial.hello1; import javax.enterprise.context.RequestScoped ...

  3. java points[复习]

    1 - & 与 && 的区别: &:不管左边是true还是false,右端都会进行运算: &&:当左端为false时,右端不再进行运算: 即在与运算时, ...

  4. victory-native的使用

    Victory用于构建交互数据可视化的可组合React组件的生态系统 想写又不想写,真尴尬...

  5. Druid的简介

    Druid的简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBos ...

  6. 如何在JSP中获得Cookie对象

    Cookie cookies[]=request.getCookies(); //读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面 Cookie sCookie=n ...

  7. JNI实战(一):JNI HelloWorld

    使用最新Android Studio的Cmake,创建一个Native C++项目后,我们就可以看到JNI的Hello World的项目及示例代码了. JNI的项目代码,分为三层:Java层,C++层 ...

  8. 执行find / -name *.sh时报错 find: 路径必须在表达式之前: start-ressvr-release.sh

    想查找一个包含4000多文件的目录下所有.sh结尾的文件 使用命令     find  ./ -name *.sh     (本身已经在要查找的目录里了) 结果报错:  解决方法一:find ./ - ...

  9. “吃人”的那些Java名词:对象、引用、堆、栈

    记得中学的课本上,有一篇名为<狂人日记>课文:那时候根本理解不了鲁迅写这篇文章要表达的中心思想,只觉得满篇的“吃人”令人心情压抑:老师在讲台上慷慨激昂的讲,大多数的同学同我一样,在课本面前 ...

  10. JavaDBF:保存行情实时数据到DBF文件

    JavaDBF.jar其实很早都不再更新了,在日新月异的科技圈算得上远古上神的jar包,早该身归混沌了. 但我们的项目要用到,因为之前做的大宗期货交易行情的分析文件依然是dbf文件,没有办法,还得用 ...