Docker本地部署Redis容器结合内网穿透实现无公网ip远程连接

news2025/1/16 14:05:08

文章目录

    • 前言
    • 1. 安装Docker步骤
    • 2. 使用docker拉取redis镜像
    • 3. 启动redis容器
    • 4. 本地连接测试
      • 4.1 安装redis图形化界面工具
      • 4.2 使用RDM连接测试
    • 5. 公网远程访问本地redis
      • 5.1 内网穿透工具安装
      • 5.2 创建远程连接公网地址
      • 5.3 使用固定TCP地址远程访问

前言

本文主要介绍如何在Ubuntu使用Docker部署Redis容器并结合cpolar内网穿透工具实现无公网ip环境远程访问本地数据库。

Redis作为一款高速缓存的key value键值对的数据库,在许许多多的场景中广泛使用,由于是把数据存储在内存中,所以读写效率极高。而在docker中部署Redis也非常简单,下面就来一起看看吧。

1. 安装Docker步骤

本文中使用的操作系统为Ubuntu 22.04

添加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

安装 Docker 包

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拉取redis镜像

首先在终端中执行下方命令拉取镜像:

sudo docker pull redis

image-20240119112726716

然后执行查看镜像命令:

sudo docker images

1705635040000

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

3. 启动redis容器

在启动容器前,需要简单修改一下Redis外部挂载的配置文件。

本教程中,首先创建了/usr/local/redis/conf/redis.conf文件,

然后使用nano编辑器写入了网上找的redis.conf文件,保存后退出编辑器。

#任何ip可以访问
bind 0.0.0.0
#守护进程
#daemonize yes
daemonize yes
#不启用保护模式
protected-mode no
#指定redis运行的端口
port 6379
tcp-backlog 511
timeout 0
#持久化⽂件名称
dbfilename xdclass.rdb
#持久化⽂件存储路径
dir /data/
#持久化策略, 10秒内有个1个key改动,执⾏快照
save 10 1
######之前配置######
#导出rdb数据库⽂件压缩字符串和对象,默认是yes,会浪费CPU但是节省空间
rdbcompression yes
# 导⼊时是否检查
rdbchecksum yes
#aof持久化配置
#appendonly yes
#appendfilename "appendonly.aof"
#appendfsync everysec
# aof重写期间是否同步
no-appendfsync-on-rewrite no
# 重写触发配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 加载aof时如果有错如何处理
# yes表示如果aof尾部⽂件出问题,写log记录并继续执⾏。
no表示提示写⼊等待修复后写⼊
aof-load-truncated yes

接下来在终端中执行下方命令启动容器:

sudo docker run -p 6379:6379 --name redis -v /usr/local/redis/data:/data -v /usr/local/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf

这里我给容器的名称起为redis,您可以根据需要替换成其他名称。

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

sudo docker ps

1705654166715

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

4. 本地连接测试

4.1 安装redis图形化界面工具

现在我们已经在docker中本地部署了redis容器,如果要在本地进行连接测试,

可以下载redis图形化界面工具:Redis Desktop Manager

下载地址:https://pan.baidu.com/s/19FLBKyQkRlK4ktZFRg3j6Q?pwd=6666

提取码:6666

031e0a28c4815f87f8dd48bdbca151d

4.2 使用RDM连接测试

默认安装完成后,点击左下红框位置的连接redis server按钮:

0b36f14c2bbc4f102b148a69ac150ee

在弹出的窗口中,需要填入本机ip地址和redis的端口号:

1705654745490

输入后点击连接测试,如看到弹出框提示成功连接,即本地连接redis测试成功。

5. 公网远程访问本地redis

不过我们目前只能在本地使用刚刚部署的Jupyer Notebook,如果身在异地,想要远程访问在本地部署的redis容器,但又没有公网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管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复,本例使用了:redis
  • 协议:TCP
  • 本地地址:6379
  • 端口类型:随机临时TCP端口
  • 地区:选择China Top

点击创建

1705656110037

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑(异地)上,将该地址与端口号分别复制到Redis Desktop Manager访问即可。

image-20240119172500947

如下图所示,ip地址位置填写:12.tcp.cpolar.top,端口号填写:13983 ,点击链接测试:

1705656691940

1705656606403

可以看到连接成功!

小结

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

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

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

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

接下来保留一个固定TCP地址,登录cpolar官网,点击左侧的预留,找到保留的TCP地址,为远程服务器连接保留一个固定的地址:

  • 地区:选择China VIP
  • 描述:即备注,可自定义,本例使用red123

点击保留

1705656941660

地址保留成功后,复制生成的公网地址,打开cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们刚才创建的随机公网地址隧道 redis,点击编辑

image-20240119173708120

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

  • 端口类型:选择固定TCP端口
  • 预留的TCP地址:复制粘贴官网保留成功的地址,本例中为:1.tcp.vip.cpolar.cn:23876

点击更新

image-20240119173954008

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

1705657295988

接下来与之前的操作一样,可以在其他电脑(异地)上,使用这个固定的TCP地址访问redis即可。

ip地址位置填写:1.tcp.vip.cpolar.cn,端口号填写:23876 ,点击链接测试:

1705657392806

可以看到,使用固定的TCP地址成功远程连接了本地Redis!使用cpolar内网穿透工具无需购买域名服务器,也不用设置路由器那么麻烦,轻松实现大家在公网远程访问本地服务的需求!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1496835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HarmonyOS NEXT应用开发案例——阻塞事件冒泡

介绍 本示例主要介绍在点击事件中,子组件enabled属性设置为false的时候,如何解决点击子组件模块区域会触发父组件的点击事件问题;以及触摸事件中当子组件触发触摸事件的时候,父组件如果设置触摸事件的话,如何解决父组…

windows下以服务的方式安装nginx

下载WinSW 下载64位即可 WinSW-x64.exe复制到nginx目录下修改为nginxservice.exe 在 nginxservice.exe 同目录中,新建一个空的 nginxservice.xml 文件(名字要与nginxservice.exe 名字前缀保持一致,但后缀是xml) , n…

【C语言】linux内核napi_gro_receive和netif_napi_add

napi_gro_receive 一、注释 // napi_gro_receive是网络设备接口的一个函数,它被NAPI(New API)网络轮询机制使用,用于接收和处理接收到的数据包。 // 这个函数通过通用接收分组(GRO,Generic Receive Offlo…

工商全程无纸化应用与CA认证结合方案

一、引言 随着互联网技术的飞速发展,政务服务正逐步向数字化、网络化、智能化转型。为响应国家关于推进“互联网政务服务”的号召,XX工商管理局致力于实现工商企业网上注册全程无纸化,提升政务服务的效率与质量。本方案旨在结合陕西CA认证中…

模拟三方的模拟平台

https://hellosean1025.github.io/yapi/ https://github.com/YMFE/yapi https://github.com/fjc0k/docker-YApi

Spring面向切片编程AOP概念及相关术语(一)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

微信小程序django+python大学生勤工助学管理系统uniapp-hbuiderx

大学生勤工助学管理系统设计的目的是为用户提供企业招聘、已投简历等方面的平台。 与PC端应用程序相比,大学生勤工助学管理系统的设计主要面向于大学生勤工助学,旨在为管理员和学生、企业提供一个Android的大学生勤工助学管理系统。学生可以通过Android及…

新闻资讯|基于微信小程序的经济新闻资讯系统设计与实现(源码+数据库+文档)

新闻资讯小程序目录 目录 基于微信小程序的经济新闻资讯系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2 短视频信息管理 3、新闻信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…

centos7 使用rpm包部署filebeat

先决条件参考 虚拟机部署elasticsearch集群-CSDN博客 下载并安装filebeat的rpm包 curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.18-x86_64.rpmrpm -vi filebeat-7.17.18-x86_64.rpm 修改配置文件 配置文件内容可以参考 Repositories…

Vue项目实战--空间论坛(1)

环境准备 安装好node.js,Vue后 添加插件 router---路由,多页面的应用 vuex---在多个组件之间维护同一个数据 添加依赖 bootstrap---美工 popperjs/core vue项目介绍 views-----对应vue文件,页面 router-----路由,页面,c…

为什么猫咪主食冻干价格相差那么大?性价比高的主食冻干分享

养猫知识的不断普及,让主食冻干喂养逐渐受到铲屎官的青睐。但价格仍是部分铲屎官的顾虑。像我这样的资深猫友,早已开始尝试主食冻干喂养。虽然价格稍高,但其为猫咪带来的实际好处是远超其价格的。 作为一个多猫家庭的铲屎官,纯主食…

HTML入门:简单了解 HTML 和浏览器

你好,我是云桃桃。今天来简单了解一下 HTML 以及浏览器。 HTML 是什么? HTML(全称:Hypertext Markup Language)是一种标记语言,用于创建和呈现网页的结构和内容。 它由一系列标签(或称为元素…

java SSM二手交易网站系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM厂房管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S…

2024成套人才培养计划表

利驰软件深耕工业电气行业近30年,经历了从CAD工具软件,到知识管理软件,再到电气产业互联网服务平台两次重大的转型。当前电气设计软件SuperWorks已成为国产工业软件的经典之作,选型、报价、线束、母排等软件的市场占有率遥遥领先。…

Android APP性能指标(二)

文章目录 一、响应时间1.1 数据获取1.2 响应时间指标测试点1.3 启动速度测试点1.4 响应时间测试解决方法 二、流量2.1 数据获取2.2 流量测试关注点2.3 测试标准 三、电量3.1 连接手机3.2 数据获取3.3 获取APP的UID3.3 重置电池数据收集数据3.4 电量指标测试 四、温度五、性能测…

stm32学习笔记:I2C通信外设原理+实验

软件实现和硬件实现 串口通信为异步时序,用软件实现很麻烦,基本上用硬件实现 而I2C协议通信为同步时序,软件实现简单且灵活,硬件实现比较麻烦,故软件比较常用 但I2C硬件实现功能比较大,执行效率高&#xff…

四信全球化拓展再启新篇!LoRa传感器与云平台领航智能感知时代

随着科技浪潮的不断推进,物联网已逐渐融入我们的生活。刚刚结束的MWC24盛会上,四信带来了一系列前沿技术成果,不仅将5G技术成功扩展至当前市场主流类型的终端,更携手联通、ASR等业界巨头,在连接、5G RedCap、AI、LoRa以…

章鱼网络进展月报 | 2024.2.1-2.29

章鱼网络大事摘要 1、Omnity 完成了核心组件的原型开发,正在测试,未来将首先支持 Runes 资产跨链。 2、$NEAR Restaking 质押总量超过400万美元。 3、章鱼网络受邀参加 ETHDenver 2024,并且与 ICP 共同组织活动,介绍 Omnity 的…

记一次线上问题-Druid数据源配置失败

一、背景是这样的 我们的服务是spring 服务。 数据库是mysql。 接到公司要求, mysql数据源配置(JDBCURL地址) jdbc:mysql://IP:PORT/dbname?Unicodetrue&characterEncodingutf8&useSSLfalse 需要添加参数 allowMultiQueriestr…

SkyWalking 本地启动以及闪退问题

1. 下载包 Downloads | Apache SkyWalking SkyWalking APM包含OAP和UI Java Agent 就是Java 的探针 2. 运行 UI 默认端口是 8080, OAP 默认端口是 11800(grpc)12800(http) 如果占用可以修改配置文件 UI 项目的配…