Docker版MongoDB的安装

一. 什么是MongoDB

MongoDB是现在主流的分布式文档数据库。一些字段不固定的数据,使用传统数据库就不太好处理,要么要建很多表互相关联,要么要建很多冗余字段。而MongoDB简直就是为此而生的。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

典型的MongoDB数据

二. 为什么用docker版的MongoDB

你可以在MongoDB的官方文档里找到常规的安装方式。本文主要面向懵懂的初学者,一切简单为主。这里给大家介绍下最简单的安装方式,直接使用官方提供的docker镜像。

三. 准备工作

要使用docker镜像,首先你得先安装docker。对docker不熟悉的朋友可以参考我之前写的一篇docker安装和简单使用的教程。

四. 寻找官方镜像

要找docker镜像,最常规的方式是直接到Docker Hub上来找。访问Docker Hub的网站,在左上角的搜索框里输入mongo并敲下回车。

Docker Hub网站

在搜索结果中,就可以看到官方的镜像。注意,有official标志的才是官方镜像,这里不建议新手使用其他第三方提供的镜像,本文后续的讲解也是基于官方镜像。

找到官方镜像

点击搜索结果官方镜像右边的DETAILS,进入镜像详细介绍页面。在右边你可以找到下载镜像的命令docker pull mongo

镜像详细页

五. 开始安装

找到了官方镜像后,我们就可以开始安装了。进入安装好了docker的linux服务器,这里我们以之前教程介绍的阿里云centos7.3环境为例。

输入命令,下载mongo官方镜像到服务器上。

docker pull mongo
下载镜像

耐心等待下载完成,输入命令查看下载完成的镜像

docker images
镜像下载完成

镜像下载完成,下面就要开始启动容器了。启动容器前,建议大家仔细阅读前面寻找镜像时Docker Hub上关于mongo镜像的详细说明
在镜像文档里,我们知道了该镜像映射的端口号是27017,配置文件的位置在/data/configdb,数据库文件的位置在/data/db
我们输入如下命令来启动容器。

docker run -d -p 27017:27017 -v mongo_configdb:/data/configdb -v mongo_db:/data/db --name mongo docker.io/mongo

命令执行完后,输入命令docker ps -a来查看所有的容器,可以看到mongo已经成功启动。

查看启动好的容器

现在我们使用Robo工具来尝试连接,在Address填上服务器的IP地址,端口号不用改,就用默认的27017。可以看到连接成功。

使用工具连接

六. 开启身份认证

Docker版本的mongo默认不需要身份认证。刚才数据库虽然启动成功了,但是任何人知道ip地址端口号都可以登录进来。显然这样是不安全的。那如何打开身份认证功能呢。
Docker Hub上mongo镜像的官方文档里,我们可以找到答案,需要在启动容器时加上--auth命令。

现在我们关闭并删除掉刚才的容器,重新使用身份认证模式启动一个容器。

docker stop mongo
docker rm mongo
docker run -d -p 27017:27017 -v mongo_configdb:/data/configdb -v mongo_db:/data/db --name mongo docker.io/mongo --auth
身份认证模式启动

此时再通过Robo连接数据库,发现连接失败。因为我们开启了身份认证模式,但还没有创建用户设置密码。

连接mongo

输入命令进入容器内部的mongo命令行

docker exec -it mongo mongo admin

在mongo命令行输入命令创建管理员账户

db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });
创建管理员账户

创建好账户之后,我们再尝试使用Robo工具来连接,在Authentication栏目填写上刚才创建的用户名密码,即可连接成功。

连接mongo

七. 创建数据库并设置用户

目前为止我们一直都是在操作mongo自带的admin库。正常情况下是不建议直接使用这个库的。我们需要自己创建数据库并设置新库的用户。

还是先使用docker exec -it mongo mongo admin命令进入mongo的命令行页面。
使用上一步骤创建的管理员账户进行授权

db.auth("jsmith","some-initial-password");

切换到test库(如不存在会自动创建)

use test

创建test库下的用户

db.createUser({ user: 'test', pwd: '123456', roles: [{ role: "readWrite", db: "test" }] });
image.png

创建数据库并设置用户完成,现在再尝试使用Robo工具来连接下看看。
将Database和用户名密码改为我们刚才设置的,点击Test显示成功。

测试mongo

保存后直接使用工具进入数据库,可以看见test库。

连接mongo

至此,Docker版本MongoDB简单的安装使用教程就完毕了。如还有其他不完善的地方,可在文章下面留言,我会不定期更新。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 0. 前言 docker是什么?docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可...
    sessionboy阅读 3,846评论 2 49
  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,514评论 15 147
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,481评论 0 120
  • docker基本概念 1. Image Definition 镜像 Image 就是一堆只读层 read-only...
    慢清尘阅读 8,728评论 1 21
  • 那年我十六岁,刚刚踏进高中的校园,对那里一切都感到陌生。我走进班级,看到有点印象的你,手机的颜色是我最爱的蓝色,或...
    不要叫我大名阅读 355评论 0 0