Docker安装MongoDB的过程(mongo.latest)

 更新时间:2024年11月08日 09:32:16   作者:寰梦  
MongoDB是一种高性能、灵活的数据库,特别适合处理大量非结构化数据,它采用文档数据模型,支持复杂的数据结构,提供类似面向对象的查询语言,本文给大家介绍Docker安装MongoDB的过程(mongo.latest),感兴趣的朋友一起看看吧

一、MongoDB介绍

MongoDB是一种基于分布式文件存储的数据库,使用C++语言开发,旨在为Web应用提供可扩展且高性能的数据存储解决方案。作为一种介于关系数据库和非关系数据库之间的技术,MongoDB具有强大的功能和高效的性能,特别适用于处理海量的非结构化数据。

MongoDB的核心概念与特性:

  • 数据模型:MongoDB采用文档数据模型,数据以类似JSON的BSON格式存储,支持复杂的数据结构,如内嵌文档和数组,具有高度的灵活性。
  • 查询语言:MongoDB提供类似面向对象的查询语言,支持动态查询,能够实现大多数关系型数据库的单表查询功能,同时支持数据索引以提高查询性能。
  • 分布式存储:MongoDB支持水平扩展,可将数据分布到多个服务器上,保证高可用性和出色的性能。
  • 高可用性与容灾:MongoDB通过复制集和分片机制,确保系统具备高可用性和容灾能力,从而提升了系统的可扩展性。

MongoDB的发展历程与最新进展:

MongoDB由10gen(现为MongoDB Inc.)于2007年开始开发,最初目标是构建一个云平台即服务(PaaS)。2009年,MongoDB作为开源项目正式发布。自那时以来,MongoDB经历了快速发展,新增了如复制集、分片等关键特性,显著提升了可扩展性和高可用性。最近的技术创新包括优化有线协议和引入新的存储引擎,进一步增强了事务支持功能。

MongoDB的应用场景与行业应用:

MongoDB非常适合需要快速迭代和支持多样化数据格式的应用场景。凭借其灵活的数据库模型和出色的性能,MongoDB已被广泛应用于各类企业,满足从初创公司到大型企业的不同数据管理需求。尤其在处理海量非结构化数据的场景中,MongoDB表现出色,成为许多行业的首选数据库解决方案。

二、安装MongoDB

1.拉取MongoDB镜像

docker pull mongo:latest

2.创建挂载目录

(1)进入文件夹

cd /usr/local/docker

注:不必非得是/usr/local/docker这个目录,根据自己的需求和喜好来就行,可自由选择

(2)创建文件和赋权 

# 创建一个名为 mongodb 的主目录
mkdir mongodb
# 进入 mongodb 目录,以便后续操作
cd mongodb
# 创建一个名为 config 的子目录,用于存放 MongoDB 配置文件
mkdir config
# 创建一个名为 data 的子目录,用于存放 MongoDB 数据文件
mkdir data
# 创建一个名为 logs 的子目录,用于存放 MongoDB 的日志文件
mkdir logs
# 在 config 目录下创建一个名为 mongod.conf 的空文件,这是 MongoDB 的配置文件
touch config/mongod.conf
# 将 /usr/local/docker/mongodb 目录的权限设置为 777,允许任何用户对该目录进行读、写和执行操作
chmod 777 /usr/local/docker/mongodb

(3)编写配置文件

使用 vi 或 vim 编辑器打开mongod.conf文件

vim mongod.conf

如果使用FinalShell工具,可以直接双击文件打开

添加内容

# 数据库存储路径
dbpath=/usr/local/docker/mongodb/data
# 日志文件路径
logpath=/usr/local/docker/mongodb/logs/mongod.log
# 监听的端口
port=27017
# 允许所有的 IP 地址连接
bind_ip=0.0.0.0
# 启用日志记录
journal=true
# 是否后台运行
fork=true
# 启用身份验证
#auth=true

3.启动MongoDB容器

docker run -dit --name mongo \
-p 17017:27017 \
-v /usr/local/docker/mongodb/config/mongod.conf:/etc/mongod.conf \
-v /usr/local/docker/mongodb/data:/data/db \
-v /usr/local/docker/mongodb/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
--restart=always  \
mongo

解释:

docker run:

用于创建并启动一个新的 Docker 容器。

-dit:

-d:让容器在后台运行(detached mode),即以守护进程方式运行容器。

-i:保持标准输入流打开,通常与 -t 一起使用。

-t:为容器分配一个伪终端,便于交互。

--name mongo:

为启动的容器指定一个名称,这里容器名为 mongo。

-p 17017:27017:

将主机的 17017 端口映射到容器的 27017 端口,这样主机通过 17017 端口可以访问到容器内 MongoDB 服务的 27017 端口。MongoDB 默认的端口是 27017。

-v /usr/local/docker/mongodb/config/mongod.conf:/etc/mongod.conf:

将主机的配置文件 /usr/local/docker/mongodb/config/mongod.conf 挂载到容器的 /etc/mongod.conf 位置,使容器使用主机上的配置文件来启动 MongoDB 服务。

-v /usr/local/docker/mongodb/data:/data/db:

将主机的 /usr/local/docker/mongodb/data 目录挂载到容器的 /data/db,用作 MongoDB 的数据存储位置。这样可以确保数据在容器重启时持久化。

-v /usr/local/docker/mongodb/logs:/var/log/mongodb:

将主机的 /usr/local/docker/mongodb/logs 目录挂载到容器的 /var/log/mongodb 位置,用于保存 MongoDB 的日志文件。这样日志数据不会随着容器销毁而丢失。

-e MONGO_INITDB_ROOT_USERNAME=admin:

设置 MongoDB 初始化时的 root 用户名为 admin。此用户名将在数据库首次启动时用于身份验证。

-e MONGO_INITDB_ROOT_PASSWORD=123456:

设置 MongoDB 初始化时的 root 用户密码为 123456。用于数据库身份验证。

--restart=always:

确保容器在停止或崩溃后总是自动重启。如果 Docker 服务重启或容器出现故障,容器将会自动重新启动。

mongo:

指定使用 mongo 官方镜像来启动容器。该镜像包含了最新的 MongoDB 服务。

总结:

此命令启动了一个 MongoDB 容器,并通过设置配置文件、数据目录、日志目录和初始化的用户名及密码,确保 MongoDB 在启动时以指定配置运行,同时数据和日志会持久化在主机的指定目录中。通过端口映射,MongoDB 服务可以通过主机的端口访问,容器的重启策略则确保了服务的高可用性。

4.查看是否启动

三、创建用户数据

1.进入MongoDB容器

docker exec -it mongo /usr/bin/mongosh

 2.切换到 admin 库

use admin

3.执行数据库登录操作,否则后面执行命令会提示

MongoServerError[Unauthorized]: Command createUser requires authentication

# 使用创建容器时的用户名和密码
db.auth("admin","123456")

 4.登录成功后,创建新用户(用户名和密码可以自定义)

db.createUser(
  {
    user: "用户名称",           // 新用户的用户名
    pwd: "密码",              // 新用户的密码
    roles: [                 // 为该用户分配的角色权限
      { 
        role: "root",        // 角色是 "root",这是 MongoDB 中的一个内置角色,拥有数据库的完全管理权限
        db: "admin"          // 该角色是在 "admin" 数据库上授予的,这意味着该用户具有对整个 MongoDB 实例的管理权限
      }
    ]
  }
);

示例

db.createUser(
	{
		user:"testuser",
		pwd:"123456",
		roles:[{role:"root",db:"admin"}]
	}
);

5.创建完成后,尝试使用上面创建的新用户信息进行连接

db.auth('testuser','123456')

登录成功也是显示如下

四、关于用户的常用命令

1.更新用户角色,修改用户权限,不会覆盖原权限信息,只新增权限

db.updateUser("admin",{roles:[{role:"readWrite",db:"admin"}]})

2.更新用户密码

db.changeUserPassword("admin","123456")

3.删除用户

db.dropUser({'admin'})

4.查看所有用户

show users

五、使用Navicat连接MongoDB

1.打开 Navicat 新建数据库连接,选择MongoDB

2.填写配置信息

3.填写完成配置信息后,点击左下角“测试连接”按钮

提示连接成功,此时,在点击右下角“保存”按钮,即可保存连接配置,这样就可以通过Navicat去访问MongoDB数据库了。

到此这篇关于Docker安装MongoDB详解(mongo.latest)的文章就介绍到这了,更多相关Docker安装MongoDB内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker创建MySQL容器的方法

    Docker创建MySQL容器的方法

    本篇文章主要介绍了Docker创建MySQL容器的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Docker Compose一键ELK部署的方法实现

    Docker Compose一键ELK部署的方法实现

    这篇文章主要介绍了Docker Compose一键ELK部署的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • IDEA连接远程服务器Docker部署Spring Boot项目的详细教程

    IDEA连接远程服务器Docker部署Spring Boot项目的详细教程

    这篇文章主要介绍了IDEA连接远程服务器Docker部署Spring Boot项目,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • docker logs-查看docker容器日志的实现

    docker logs-查看docker容器日志的实现

    这篇文章主要介绍了docker logs-查看docker容器日志的实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker pull拉取超时的解决方案

    docker pull拉取超时的解决方案

    这篇文章主要介绍了docker pull拉取超时的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 本地Docker部署Navidrome音乐服务器与远程访问听歌详细教程(图文详解)

    本地Docker部署Navidrome音乐服务器与远程访问听歌详细教程(图文详解)

    本文和大家分享一款目前在G站有11K+Star的开源跨平台音乐服务器 Navidrome,如何在 Linux 环境本地使用 Docker 部署,并结合cpolar 内网穿透工具配置公网地址,实现随时随地远程访问本地存储音乐的详细流程,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • Docker构建镜像的两种方式实现

    Docker构建镜像的两种方式实现

    从 docker 镜像仓库中下载的镜像不能满足我们的需求时,可以通过以下两种方式对镜像进行更改。本文就详细的介绍了这两种方法,感兴趣的可以了解一下
    2021-09-09
  • 清理Docker废弃镜像与缓存详细图文教程

    清理Docker废弃镜像与缓存详细图文教程

    在使用Docker进行开发和部署过程中,我们可能会遇到需要删除旧镜像和容器以释放磁盘空间或清除不再需要的缓存的情况,这篇文章主要给大家介绍了关于清理Docker废弃镜像与缓存的相关资料,需要的朋友可以参考下
    2024-07-07
  • Docker私有仓库的搭建和界面化管理详解

    Docker私有仓库的搭建和界面化管理详解

    这篇文章主要给大家介绍了关于Docker私有仓库的搭建和界面化管理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • Docker exec 的实现原理介绍

    Docker exec 的实现原理介绍

    这篇文章主要介绍了Docker exec的实现原理,详细解读了docker exec这个操作背后,Linux Namespace更具体的工作原理,这种通过操作系统进程相关的知识,逐步剖析Docker容器的方法,需要的朋友可以参考一下
    2022-04-04

最新评论