如何正确地使用 Docker 在云服务器上部署 MongoDB v6 数据库并连接

简介: 本篇文章将向各位读者介绍使用 Docker 在云服务器上部署 MongoDB v6,并使用免费的 Studio 3T 连接数据库。本文弥补了网上既有方案的一些不足,解决了一些部署中的常见问题,有助于提升部署效率。
本文假设您已经在云服务器中成功安装了 Docker 并下载了 mongo 镜像

1. 创建配置文件

使用 Docker 部署 MongoDB 时,容器默认不会自动生成 mongod.conf 配置文件,需要开发者手动映射云服务器上的配置文件至容器内部,因此,我们需要先创建一份配置文件,您可以任意选择该文件的存储目录,这里我们假设存储路径为 /mongo/mongod.conf

配置文件内容如下:

# 数据库存储路径
dbpath=/var/lib/mongodb

# 日志文件路径
logpath=/var/log/mongodb/mongod.log

# 监听的端口
port=27017

# 允许所有的 IP 地址连接
bind_ip=0.0.0.0

# 启用日志记录
journal=true

# 启用身份验证
auth=true
🚨 注意 bind_ip 的设定非常重要,它使得我们能够远程连接数据库!

2. 创建 MongoDB 容器

使用如下 Docker 命令部署 MongoDB 容器:

docker run --name <your db name> \
  -p <hostport>:27017 \
  -v <config file address>:/etc/mongod.conf \
  -v <dbpath>:/var/lib/mongodb \
  -v <logpath>:/var/log/mongodb/mongod.log \
  -d \
  mongo \
  --auth

请按照您的实际情况替换 <> 内的内容,在这条命令中,从上至下我们制定了:

  1. 容器名;
  2. 云服务器与容器内部的端口映射;
  3. 配置文件映射;
  4. 数据存储路径映射;
  5. 日志路径映射;
  6. 持久化后台运行;
  7. 镜像名称;
  8. 需要身份验证;

3. 创建身份信息

您需要使用 docker exec -it <your db name> mongosh 进入 MongoDB 数据库。

🚨 MongoDB v6 版本不再使用 mongod 命令作为客户端,而使用 mongosh

使用下面的命令创建管理员账户:

use admin
db.createUser({user: "<username>", pwd: "<password>", roles: [{role: "root", db: "admin"}]})

使用管理员账户进行身份验证:

mongo -u <admin> -p <password> --authenticationDatabase admin

创建数据库与普通账号:

use <database_name>
db.createUser({user: "<username>", pwd: "<password>", roles: [{role: "readWrite", db: "<database_name>"}]})

4. 对外开放端口

我们必须开放云服务器端口才能支持远程访问,为此我们需要先查看目前已开放端口(当前为 CentOS):

sudo firewall-cmd --list-all

然后开放目标端口,注意,需使用 --zone=docker 参数:

sudo firewall-cmd --zone=docker --add-port=<the port>/tcp --permanent
💡 默认情况下,CentOS 会使用 firewalld 防火墙来管理网络连接。每个连接/接口都被分配到一个特定的区域,例如 publicprivatedocker 等。每个区域都具有一组默认的防火墙规则,用于控制该区域的网络流量。

最后,如果您使用的是阿里云,您需要登录阿里云控制台,手动在「安全组」一项开启目标端口!

5. 使用 Studio 3T 连接数据库

Studio 3T 是一个免费的 MongoDB GUI,当您下载完成后,您可以通过如下方式访问我们的数据库:

image.png

点击左上角 connect 图标,点击 New Connection 按钮:

image.png

在 URI 中填写 MongoDB URI:mongodb://<username>:<password>@<IP address>:<port>/<database name>

至此,您完成了 MongoDB 的部署,并成功通过 Studio 3T 进行远程连接!

6. 总结

在本篇文章中,我们介绍了如何使用 Docker 部署 v6 版本的 MongoDB 数据库,并使用 Studio 3T 远程连接。目前,很多记述该内容的文章要么不完整,要么不支持 MongoDB v6 版本,这使得部署 MongoDB v6 版本变得不那么轻松,希望我这篇文章能够帮助各位降低部署的难度。如果您在部署的过程中遇到困难,也欢迎您将困难和解决方案附加到评论中,以帮助其他人更方便的操作。

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
Java Linux Apache
在CentOS服务器上编译并部署NiFi源码
部署Apache NiFi在CentOS上是一个涉及细节的过程,需要注意Java环境、源码编译、配置调整等多个方面。遵循上述步骤,可以在CentOS服务器上成功部署和配置Apache NiFi,从而高效地处理和分发数据。
231 17
|
5月前
|
弹性计算 人工智能 前端开发
在阿里云ECS上部署n8n自动化工作流:U2实例实战
本文介绍如何在阿里云ECS的u2i/u2a实例上部署开源工作流自动化平台n8n,利用Docker快速搭建并配置定时任务,实现如每日抓取MuleRun新AI Agent并推送通知等自动化流程。内容涵盖环境准备、安全组设置、实战案例与优化建议,助力高效构建低维护成本的自动化系统。
1223 5
|
6月前
|
弹性计算 安全 Linux
使用阿里云服务器安装Z-Blog博客网站流程,新手一键部署教程
本教程教你如何在阿里云99元服务器上,通过宝塔Linux面板一键部署Z-Blog博客。基于CentOS 7.9系统,从远程连接、安装宝塔面板、开放端口到部署Z-Blog全流程详解,操作简单,新手也能轻松搭建个人博客网站。
684 13
|
8月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
8月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
737 79
|
8月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
338 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
7月前
|
运维 NoSQL 容灾
告别运维噩梦:手把手教你将自建 MongoDB 平滑迁移至云数据库
程序员为何逃离自建MongoDB?扩容困难、运维复杂、高可用性差成痛点。阿里云MongoDB提供分钟级扩容、自动诊断与高可用保障,助力企业高效运维、降本增效,实现数据库“无感运维”。
|
11月前
|
NoSQL MongoDB 数据库
数据库数据恢复——MongoDB数据库服务无法启动的数据恢复案例
MongoDB数据库数据恢复环境: 一台Windows Server操作系统虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 管理员在未关闭MongoDB服务的情况下拷贝数据库文件。将MongoDB数据库文件拷贝到其他分区后,对MongoDB数据库所在原分区进行了格式化操作。格式化完成后将数据库文件拷回原分区,并重新启动MongoDB服务。发现服务无法启动并报错。