it编程 > 数据库 > mongodb

Linux系统部署MongoDB开源文档型数据库并实现无公网IP远程访问

150人参与 2024-08-01 mongodb


💡 推荐

前言

本文主要介绍如何在linux ubuntu系统快速部署mongodb,并结合cpolar内网穿透工具实现公网远程访问本地数据库。

mongodb服务端可以运行在linux、windows、macos平台,可以存储比较复杂的数据类型,支持的查询语言非常强大,几乎可以实现类似关系数据库单表查询的绝大部分功能,还可以对数据建立索引。

直接实用包管理器安装mongodb比较复杂,使用docker安装部署mongodb则相对简单快速,下面就和大家分享一下具体操作流程。

0920c95b762166d005b42f74d46e654

1. 安装docker

本教程操作环境为linux ubuntu系统,在开始之前,我们需要先安装docker。

在终端中执行下方命令:

添加docker源

# add docker's official gpg key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fssl https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# add the repository to apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$version_codename") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装dokcer包

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通过运行映像来验证 docker 引擎安装是否成功

sudo docker run hello-world

2. 使用docker拉取mongodb镜像

sudo docker pull mongo

image-20240221134922055

然后执行查看镜像命令:

sudo docker images

image-20240221135030232

可以看到成功拉取了mongodb镜像。

3. 创建并启动mongodb容器

成功拉取mongodb镜像后,我们可以使用该镜像创建并运行一个mongodb容器。

首先在宿主机上创建存储目录/docker_mount/mongodb/data,用于持久化mongodb数据。

您可以使用以下命令进行创建:

sudo mkdir -p /docker_mount/mongodb/data

然后在终端执行以下命令运行容器:

sudo docker run -d -p 27017:27017 --name mongodb -v /docker_mount/mongodb/data:/data/db -e mongo_initdb_root_username=root -e mongo_initdb_root_password=password mongo

1708500820559

参数说明:

然后执行下方命令查看容器是否正在运行:

sudo docker ps

image-20240221153852667

可以看到刚才创建的mongodb容器正在运行中。

4. 本地连接测试

ok,经过以上过程,docker部署 mongodb 就完成了,现在我们可以通过navicat进行连接测试。

我使用的 navicat 的版本是 16,如下图新建 mongodb 的连接:

主机填写宿主机ip,大家可以在终端中输入 ip addr命令进行查看。

端口填写:27017

验证填写:admin

用户名和密码填写刚才启动容器时设置的账号密码:root和password

image-20240221154325747

然后点击测试连接,可以看到连接成功!

5. 公网远程访问本地mongodb容器

不过我们目前只能在本地连接刚刚使用docker部署的mongodb服务,如果身在异地,想要远程访问在本地部署的mongodb容器,但又没有公网ip怎么办呢?

我们可以使用cpolar内网穿透工具来实现无公网ip环境下的远程访问需求。

5.1 内网穿透工具安装

下面是安装cpolar步骤:

curl -l https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
sudo systemctl enable cpolar
sudo systemctl start cpolar

cpolar安装成功后,在外部浏览器上访问linux 的9200端口即:【http://服务器的局域网ip:9200】,使用cpolar账号登录,登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可。

image-20230831171159175

5.2 创建远程连接公网地址

登录cpolar web ui管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

点击创建

image-20240221160200575

然后打开在线隧道列表,查看并且复制tcp协议的公网地址,注意tcp://无需复制

image-20240221160228682

打开navicat或者其他连接工具,主机选项输入上面我们cpolar中创建的公网地址,端口号对应地址冒号后面生成的公网端口号。

image-20240221160051207

然后点击测试连接,可以看到连接成功!

小结

为了方便演示,我们在上边的操作过程中使用了cpolar生成的tcp公网地址隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在24小时内会发生随机变化,更适合于临时使用。

如果有长期远程访问本地mongodb服务的需求,但又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择使用固定的tcp地址来远程访问。

5.3 使用固定tcp地址远程访问

登录cpolar官网后台,点击左侧的预留,找到保留的tcp地址,我们来为远程连接mongodb数据库保留一个固定tcp地址。

点击保留

image-20240221160835462

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

本例中地址为:6.tcp.vip.cpolar.cn:13644

然后在浏览器上访问linux局域网ip地址+:9200端口,登录cpolar web ui管理界面。

点击左侧仪表盘的隧道管理——隧道列表,找到我们上面创建的远程数据库隧道,点击右侧的编辑

image-20240221161016132

修改隧道信息,将保留成功的固定tcp地址配置到隧道中

点击更新

image-20240221161130133

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新成为了固定tcp地址。

image-20240221161207657

打开连接工具,输入官网保留的固定tcp地址,端口为地址后面对应的公网端口号,点击测试连接。

image-20240221161332281
出现连接成功表示成功,现在这个公网地址不会再随机变化,只要保持隧道正常在线,我们在外就可以通过这个公网地址远程连接到局域网内的mongodb数据库。

以上就是如何在ubuntu系统使用docker部署mongodb容器,并结合cpolar内网穿透工具实现公网远程访问内网本地服务的全部流程,感谢您的观看。

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

MongoDB教程(十九):MongoDB全文检索

08-01

MongoDB全文检索: 助力快速精准的文本搜索

08-02

登顶GitHub热榜的开源AI神器DocsGPT团队选择 MongoDB Atlas作为托管数据库

08-03

面试笔记系列六之redis+kafka+zookeeper基础知识点整理及常见面试题_mongodb,redis,zookeeper,kafka的基本知识区别

08-06

MongoDB 全文检索

08-06

nginx的限流和网关gatway限流详解

08-14

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论