Docker 安装 MongoDB 6.x 详解

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本文详细介绍了在 Linux 系统中通过 Docker 下载 mongo 镜像,创建 mongo 容器的过程,同时介绍了宿主机访问容器内数据库服务的方式,也介绍了在本地远程访问服务器内数据库服务的方式。对于 Robo 3T 这个工具,非常好用,推荐使用。

本文主要介绍 MongoDB 基于 Docker 容器化的安装方案。通过 docker 容器化技术,只需几行命令,就可以快速创建一个 MongoDB 数据库服务。下面是详细过程,供大家参考。

Docker 安装 MongoDB

以 Centos 为例,需要先安装好 docker 环境:

$ yum install docker

查看 docker 版本号:

$ docker -v
Docker version 20.10.17, build 100c701

能正确输出,说明 docker 安装成功。

下载镜像

然后来到 dockerhub 查看 mongo 镜像:

image-20221109093038469

写作本文时,最新的 latest 版本为 6.0.2:

image-20221109093307027

通过 docker 命令拉取 mongo 的镜像,不指定 tag 的话默认是 latest,也就是 6.0.2

$ docker pull mongo

查看下载好的镜像:

$ docker images
REPOSITORY            TAG       IMAGE ID       CREATED         SIZE
mongo                 latest    b70536aeb250   13 days ago      695MB

创建容器

使用 docker 非常简单,将镜像启动为容器,就能将一个服务运行起来

启动容器的命令是 docker run

$ docker run 

启动 mongo 容器之前,先将宿主机的 mongod 服务停止,防止产生端口占用冲突:

$ mongod --dbpath=/data/mongodb/data  --shutdown

停止时也需要指定数据目录。

查看 mongo 镜像的文档可知,启动一个 mongo 容器最简单的方式是:

$ docker run --name mongo -d -p 27017:27017 mongo

参数说明:

  • --name mongo:创建的容器的名字,自定义,一般和镜像名字有对应关系
  • -d:以守护进程方式启动容器
  • -p 2701:27017:MongoDB 的默认端口号为 27017,这个参数是将宿主机的端口映射到当前 mongo 容器的端口,这样,就能通过网络访问容器的数据库服务了
  • mongo:使用哪一个镜像创建容器。完整的写法是 <image:tag>。由于下载 mongo 镜像时没有指定 tag,也就是使用的默认的 tag,这里也就不用指定了。

通过上面这样一条简单的命令,一个 mongo 容器就创建好了,会返回创建好的容器的 ID:

image-20221102222133402

查看运行的 docker 容器:

$ docker ps

可以看到容器的 ID、名字、创建时间、端口等信息:

image-20221102222328363

此时一个 mongo 容器已经在运行中了。

停止容器运行

使用 stop 命令,后面可跟容器名,容器 ID:

$ docker stop mongo 

$ docker stop 1b5c

只需要 ID 的前几位就能识别到唯一的容器,所以在使用 ID 时通常都会简写:

image-20221102223521672

通过命令查看所有的容器:

$ docker ps -a

可以看到,mongo 容器在 58 秒前退出了:

image-20221102223636521

宿主机访问容器内的数据服务

容器就是一个小型的虚拟机。现在,MongoDB 在容器内部运行着,为了访问数据服务,就需要用到 Mongo 客户端来连接。这里的 Mongo 客户端是指广泛的客户端,比如 MongoDB Shell,Nodejs 中的 Mongoose,以及图形化工具 Robo 3T 等等,都属于 MongoDB 客户端,只要有凭证,都能连接到运行中的 mongod 服务。

上文中我们在 Windows 系统和服务器(宿主机)中都单独安装了 MongoDB Shell,用于连接到 MongoDB 服务。它作为一个客户端工具,不管 MongoDB 服务运行在本地,还是容器中,亦或是网络上,都能访问到

由于默认创建的容器服务没有设置用户名和密码,所以只需要地址和端口号,就能连接成功。

使用宿主机的 mongosh 连接:

$ mongosh

默认会去连接 mongodb://127.0.0.1:27017,于是找到了容器内的 mongod 服务:

image-20221109232039231

外网访问 MongoDB 服务

开放 27017 端口

外网访问之前,需要登录服务器的控制台,去安全组中开放 27017 端口:

image-20221109101836591

shell 工具

使用本地的 mongosh 进行连接,此时需要指定远程主机的 IP 和端口号:

$ mongosh --host 101.200.218.201 --port 27017

或者可以简写为:

$ mongosh mongodb://101.200.218.201:27017

image-20221109232523931

Robo 3T 工具

Robo 3T 是一款优秀的支持 MongoDB 数据库的可视化客户端工具,点击进入官网下载

安装过程非常简单,就不再演示。

安装成功后打开 Robo 3T,新建一个数据库连接:

image-20221109102322351

弹出的窗口中选择 create

image-20221109102628634

Name 中可以为此连接设置一个名字,在 Address 中输入服务器的 IP 和端口号,点击左下方的 Test 按钮,进行连通测试。如下图表示成功连接。再点击 Save 按钮保存此连接。

image-20221109103001363

然后选择此连接,点击 Connect 按钮即可连接到服务器中运行的 MongoDB 服务:

image-20221109103211017

image-20221109103233456

总结

本文详细介绍了在 Linux 系统中通过 Docker 下载 mongo 镜像,创建 mongo 容器的过程,同时介绍了宿主机访问容器内数据库服务的方式,也介绍了在本地远程访问服务器内数据库服务的方式。对于 Robo 3T 这个工具,非常好用,推荐使用。

数据库是运行在宿主机,还是容器内,其实都一样的对外提供了服务,我们只需要关注操作数据库即可。

目前我们安装的 MongoDB 都还没有设置用户名和密码,这十分不安全。所以在真正开始操作数据库之前,下篇文章我们先介绍 MongoDB 的安全策略。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
1天前
|
消息中间件 Docker 容器
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
这篇文章提供了RabbitMQ的安装和基本使用教程,包括如何使用Docker拉取RabbitMQ镜像、创建容器、通过浏览器访问管理界面,以及如何创建交换机、队列、绑定和使用direct、fanout和topic三种类型的交换器进行消息发布和接收的测试。
消息中间件RabbitMQ---Docker安装RabbitMQ、以及RabbitMQ的基本使用【二】
|
1天前
|
关系型数据库 MySQL Java
腾讯云服务器的使用、服务器中使用Docker安装常见的软件、如何将一个项目发布到服务器
这篇文章介绍了在腾讯云服务器上使用Docker安装常见软件的过程,包括安装MySQL、Redis和Tomcat,并提供了解决连接问题的方法。同时,还涉及了服务器中安装JDK 1.8的步骤和如何将项目打包部署到服务器上的指导,包括注意事项和操作提示。
腾讯云服务器的使用、服务器中使用Docker安装常见的软件、如何将一个项目发布到服务器
|
1天前
|
应用服务中间件 Docker 容器
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
这篇文章介绍了在Docker中安装Tomcat的过程,包括搜索Tomcat镜像、拉取镜像、目录挂载的准备、创建并挂载容器,以及如何进入容器和进行测试。文中还说明了如何将WAR包部署到Tomcat服务器并访问部署的应用。
在服务器中使用Docker安装Tomcat、同时实现目录挂载、并且部署War包到服务器
|
1天前
|
应用服务中间件 Linux nginx
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
这篇文章讨论了Linux虚拟机磁盘扩容的方法,包括外部配置、具体扩容步骤和扩容后的效果验证。同时,文章还涉及了Docker容器磁盘满的问题及其解决方法,如删除不必要的镜像和容器,以及调整Docker的安装路径。此外,还提到了意外情况的处理,例如误删除停止的容器后的应对措施。最后,文章还提供了使用Docker安装nginx的步骤和成功访问的截图。
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
|
1天前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
1天前
|
关系型数据库 MySQL Linux
一文教会你如何在Linux系统中使用Docker安装Mysql 5.7版本 【详细过程+图解】
这篇文章提供了在Linux系统中使用Docker安装Mysql 5.7版本的详细过程和图解,包括安装指定版本、创建实例、启动、使用Navicat连接测试、文件挂载与端口映射、进入容器、配置文件修改以及重新启动容器等步骤。
一文教会你如何在Linux系统中使用Docker安装Mysql 5.7版本 【详细过程+图解】
|
2天前
|
Ubuntu Shell Docker
在Docker环境下如何“安装”Ubuntu
【8月更文挑战第18天】在Docker环境中“安装”Ubuntu实际上是指利用Ubuntu镜像构建容器。
18 1
|
5天前
|
存储 Ubuntu Linux
如何安装和使用 Docker:入门指南
如何安装和使用 Docker:入门指南
29 1
|
5天前
|
存储 关系型数据库 Linux
在CentOS 7上安装和使用Docker的方法
在CentOS 7上安装和使用Docker的方法
31 1
|
5天前
|
Ubuntu Shell 应用服务中间件
在Ubuntu 14.04上安装和使用Docker Compose的方法
在Ubuntu 14.04上安装和使用Docker Compose的方法
13 1