当前位置: 首页 > news >正文

如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

文章目录

    • 前言
    • 1. 安装Docker
    • 2. 使用Docker拉取MongoDB镜像
    • 3. 创建并启动MongoDB容器
    • 4. 本地连接测试
    • 5. 公网远程访问本地MongoDB容器
      • 5.1 内网穿透工具安装
      • 5.2 创建远程连接公网地址
      • 5.3 使用固定TCP地址远程访问

正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。

前言

本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署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

参数说明:

  • –name excalidraw:本例容器名称为mongodb,大家可以自己起名。
  • **-e MONGO_INITDB_ROOT_USERNAME=root:**初始化一个root角色的用户root
  • **-e MONGO_INITDB_ROOT_PASSWORD=password:**密码是password,大家可以自己设置。
  • -p 27017:27017: 端口进行映射,将本地27017端口映射到容器内部的27017端口。
  • **-d ** :设置容器在在后台一直运行。

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

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步骤:

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

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

image-20230831171159175

5.2 创建远程连接公网地址

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

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复,本例使用了:mongo1
  • 协议:tcp
  • 本地地址:27017
  • 域名类型:随机域名
  • 地区:选择China VIP

点击创建

image-20240221160200575

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

image-20240221160228682

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

image-20240221160051207

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

小结

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

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

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

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

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

  • 地区:选择China vip
  • 描述:即备注,可自定义

点击保留

image-20240221160835462

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

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

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

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

image-20240221161016132

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

  • 端口类型:修改为固定tcp端口
  • 预留的tcp地址:填写官网保留成功的地址,

点击更新

image-20240221161130133

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

image-20240221161207657

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

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

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

相关文章:

如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 …...

适用于 Windows 的 12 个最佳 PDF 编辑器

PDF文档的普遍存在按理说,PDF文档的可读性和可移植性受到专业文档的青睐。 然而,PDF格式的可食用性是一大缺陷。幸运的是,各种 PDF 编辑工具和软件使 PDF 的编辑变得更加容易,这篇文章旨在帮助我们的读者找到其中最好的工具和软件…...

C++面试:SQL注入、web shell攻击的危害和规避方法

目录 SQL注入 工作原理 危害 规避方法 示例背景 Web Shell攻击 工作原理 危害 规避方法 SQL注入和Web Shell攻击是两种常见的网络安全威胁,它们可以对系统造成严重的危害。了解它们的工作原理、危害以及如何规避是网络安全防护的基本要求。下面将详细介绍这…...

计算机网络基础之计算机网络组成与分类

计算机网络基础 计算机网络是计算机技术与通信技术发展相结合的产物,并在用户需求的促进下得到进一步的发展。通信技术为计算机之间的数据传输和交换提供了必需的手段,而计算机技术又渗透到了通信领域,提高了通信网络的性能。 计算机网络的…...

怎么使用Git进行版本恢复

场景 在实际工作过程中,有时候会出现以下问题: 1.在使用git对代码进行远程仓库托管时,会出现误操作,怎么恢复上一个版本或指定历史版本? 2.git 误操作,将代码提交到 master 主分支,怎么恢复 …...

三防平板电脑丨亿道工业三防平板丨三防平板定制丨机场维修应用

随着全球航空交通的增长和机场运营的扩展,机场维护的重要性日益凸显。为确保机场设施的安全和顺畅运行,采取适当的措施来加强机场维护至关重要。其中,三防平板是一种有效的工具,它可以提供持久耐用的表面保护,使机场维…...

基于深度学习的红肉新鲜过期判决系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 系统构成与流程 4.2 模型训练与优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ...............................................…...

mysql 锁详解

目录 前言 一、全局锁 二、表级锁 三、行锁 前言 为什么要设计锁,锁设计初衷是为了解决多线程下并发问题。出现并发的时候用锁进行数据同步,避免因并发造成了数据错误(数据覆盖)。可见锁的重要性,并不是所有的数据库都有锁。比如Redis&a…...

【PX4-AutoPilot教程-TIPS】PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法

PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法 问题描述解决方法 问题描述 无人机在Gazebo中飞行时,无人机始终处于画面中央,会带着视角乱晃,在Gazebo中进行任何操作视角都无法固定。 观察Gazebo左侧Wo…...

五种多目标优化算法(NSGA2、MOPSO、MSSA、MOGWO、NSWOA)求解9个测试函数,包含6种评价指标(提供MATLAB代码)

一、5种多目标优化算法简介 1.1NSGA2 1.2MOPSO 1.3MSSA 1.4MOGWO 1.5NSWOA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数(zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3)&#xff0…...

Sora--首个大型视频生成模型

Sora--首个大型视频生成模型 胡锡进于2024年2月20日认为:台当局怂了 新的改变世界模拟器视觉数据转换视频压缩时空补丁(Spacetime Laten Patches)视频生成扩展变压器算法和模型架构结语 胡锡进于2024年2月20日认为:台当局怂了 **T…...

关于 Reflect 的笔记

背景:Reflect 为了操作对象而提供的新Api 和 Proxy对象一样 特点 将object 对象的一些明显属于语言内部的方法,放到Reflect 上处理;修改某些object返回的异常结果,让其变得更合理;让object操作都变成函数行为&#xf…...

week04day02(爬虫02)

<span>: 通常用于对文本的一部分进行样式设置或脚本操作。<a>: 定义超链接&#xff0c;用于创建链接到其他页面或资源的文本。<img>: 用于插入图像。<br>: 用于插入换行。 姓名&#xff1a;<input type"text" value"lisi">…...

【C++初阶】类和对象(中)

目录 一.类的6个默认成员函数 1.知识引入 ​编辑 2.构造函数 (1)概念 (2)语法特性 (3)特征 ①问题引入1 ②问题引入2 &#xff08;缺少默认构造函数&#xff09; 3.析构函数 (1)概念 (2)特性 4.拷贝构造函数 (1)概念 (2)特征 ①拷贝构造函数是构造函数的一…...

Python爬虫知识图谱

下面是一份详细的Python爬虫知识图谱&#xff0c;涵盖了从基础入门到进阶实战的各个环节&#xff0c;涉及网络请求、页面解析、数据提取、存储优化、反爬策略应对以及法律伦理等多个方面&#xff0c;并配以关键点解析和代码案例&#xff0c;以供读者深入学习和实践。 一、Pyth…...

安宝特AR汽车行业解决方案系列1-远程培训

在汽车行业中&#xff0c;AR技术的应用正悄然改变着整个产业链的运作方式&#xff0c;应用涵盖培训、汽修、汽车售后、PDI交付、质检以及汽车装配等&#xff0c;AR技术为多个环节都带来了前所未有的便利与效率提升。 安宝特AR将以系列推文的形式为读者逐一介绍在汽车行业中安宝…...

微服务篇之分布式系统理论

一、CAP定理 1.什么是CAP 1998年&#xff0c;加州大学的计算机科学家 Eric Brewer 提出&#xff0c;分布式系统有三个指标&#xff1a; 1. Consistency&#xff08;一致性&#xff09;。 2. Availability&#xff08;可用性&#xff09;。 3. Partition tolerance &#xff0…...

MLflow【部署 01】MLflow官网Quick Start实操(一篇学会部署使用MLflow)

一篇学会部署使用MLflow 1.版本及环境2.官方步骤Step-1 Get MLflowStep-2 Start a Tracking ServerStep 3 - Train a model and prepare metadata for loggingStep 4 - Log the model and its metadata to MLflowStep 5 - Load the model as a Python Function (pyfunc) and us…...

NDK的log.h使用__android_log_print报错app:buildCMakeDebug[x86_64]

org.gradle.api.tasks.TaskExecutionException: Execution failed for task :app:buildCMakeDebug[x86_64] 重点是 Execution failed for task :app:buildCMakeDebug[x86_64]. 我的代码&#xff1a; #include <android/log.h> #define LOG_TAG "MyJNI" #d…...

【计算机网络:DHCP协议】

文章目录 前言一、DHCP是什么&#xff1f;二、DHCP的工作原理1.基本流程发现&#xff08;DISCOVER&#xff09;提供&#xff08;OFFER&#xff09;请求&#xff08;REQUEST&#xff09;确认&#xff08;ACKNOWLEDGEMENT&#xff09; 2.DHCP租约的概念3.DHCP续租过程 三、DHCP服…...

http前生今世

HTTP/0.9&#xff0c;仅支持GET方法&#xff0c;并且响应中没有HTTP头信息&#xff0c;只有文档内容。 HTTP/1.0增加了对POST方法、状态码、HTTP头信息等的支持&#xff0c;这一版本也是广泛应用的历史性版本。 HTTP/1.1引入了持久连接&#xff08;Persistent Connections&…...

一键安装ROS适用于Ubuntu22/20/18

一键安装ROS适用于Ubuntu22/20/18 1、简介 ROS&#xff08;Robot Operating System&#xff0c;机器人操作系统&#xff09;是一个用于机器人软件开发的框架。它提供了一套工具和库&#xff0c;用于机器人应用程序的开发、测试和部署。ROS是由美国斯坦福大学机器人实验室&…...

OLED透明屏厂家:开启2024年新征程

随着科技的不断进步和创新&#xff0c;OLED透明屏作为一种前沿的显示技术&#xff0c;正逐渐走进人们的视野&#xff0c;成为多个领域的焦点。在2024年2月21日这个特殊的日子&#xff0c;我们这家领先的OLED透明屏厂家正式开工&#xff0c;预示着我们将迎来一个充满机遇和挑战的…...

【算法与数据结构】200、695、LeetCode岛屿数量(深搜+广搜) 岛屿的最大面积

文章目录 一、200、岛屿数量1.1 深度优先搜索DFS1.2 广度优先搜索BFS 二、695、岛屿的最大面积2.1 深度优先搜索DFS2.2 广度优先搜索BFS 三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、200、岛屿数量 1.1 深度优先搜…...

第四十一回 还道村受三卷天书 宋公明遇九天玄女-python创建临时文件和文件夹

宋江想回家请老父亲上山&#xff0c;晁盖说过几天带领山寨人马一起去。宋江还是坚持一个人去。 宋江到了宋家村&#xff0c;被两个都头和捕快们追捕&#xff0c;慌不择路&#xff0c;躲进了一所古庙。一会儿&#xff0c;听见有人说&#xff1a;小童奉娘娘法旨&#xff0c;请星主…...

Tofu5m 高速实时推理Yolov8

Tofu5m 是高性价比目标识别跟踪模块&#xff0c;支持可见光视频或红外网络视频的输入&#xff0c;支持视频下的多类型物体检测、识别、跟踪等功能。 Yolov8推理速度达到40帧每秒。 实测视频链接&#xff1a;Tofu5m识别跟踪模块_哔哩哔哩_bilibili 产品支持视频编码、设备管理…...

[SWPUCTF 2021 新生赛]crypto8

第一眼看见是乱码不确定是什么的编码 看了下感觉是UUencode编码 UUencode编码是一种古老的编码方式&#xff0c;通常用于将二进制数据转换成可打印字符的形式。UUencode编码采用一种基于64个字符的编码表&#xff0c;将每3个字节的数据编码为4个可打印字符&#xff0c;以实现…...

学习使用js调用动态函数名(动态变量函数名)

学习使用js调用动态函数名-动态变量函数名 背景代码 背景 函数名写在 html 上&#xff0c;在 js 中定义这个变量&#xff0c;js 报错该函数不存在&#xff0c;在此给出解决方法 代码 //html代码如下 <a data-function"qipa" class"clickMe">250&l…...

CSS 圆形的时钟秒针状的手柄绕中心点旋转的效果

<template><!-- 创建一个装载自定义加载动画的容器 --><view class="cloader"><!-- 定义加载动画主体部分 --><view class="clface"><!-- 定义类似秒针形状的小圆盘 --><view class="clsface"><!-…...

MYSQL--存储过程操作

一&#xff1a;概念&#xff1a; 存储过程实际上对标了JAVA当中的方法&#xff0c;两者是相似的&#xff0c;同时需要注意的一点是&#xff0c;MYSQL仅仅在5.0版本之后才出现这种存储操作的过程&#xff1b; 优点&#xff1a; 1.存储过程能够让运行的速度变得更加迅速&#xff…...