Docker中安装MongoDB

简介: Docker中安装MongoDB

Docker中安装MongoDB

一. 什么是MongoDB

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

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

image-20210912170908924

二. 为什么用docker版的MongoDB

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

三. 准备工作

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

四. 寻找官方镜像

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

image-20210912170946795

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

image-20210912171000470

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

image-20210912171020171

五. 开始安装

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

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

docker pull mongo

image-20210912171044349

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

docker images

image-20210912171058881

镜像下载完成,下面就要开始启动容器了。启动容器前,建议大家仔细阅读前面寻找镜像时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已经成功启动。

image-20210912171134864

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

image-20210912171156033

六. 开启身份认证

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

image-20210912171301351

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

image-20210912171324579

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

docker exec -it mongo mongo admin

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

db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

image-20210912171357598

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

image-20210912171422073

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

目前为止我们一直都是在操作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-20210912171504854

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

image-20210912171525626

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

image-20210912171540057

至此,Docker版本MongoDB简单的安装使用教程就完毕了。

相关文章
|
5月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
2月前
|
NoSQL Ubuntu MongoDB
在Ubuntu 22.04上安装MongoDB 6.0的步骤
这些步骤应该可以在Ubuntu 22.04系统上安装MongoDB 6.0。安装过程中,如果遇到任何问题,可以查阅MongoDB的官方文档或者Ubuntu的相关帮助文档,这些资源通常提供了解决特定问题的详细指导。
319 18
|
3月前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
441 3
docker 安装 Postgres 17.6
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
503 5
|
2月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
384 2
|
6月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
736 4
|
5月前
|
Linux Docker Windows
windows docker安装报错适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新。
适用于 Linux 的 Windows 子系统需更新至最新版本(如 wsl.2.4.11.0.x64.msi)以解决 2025 年 Windows 更新后可能出现的兼容性问题。用户可通过运行 “wsl.exe --update” 或访问提供的链接下载升级包进行更新。
1976 0