概述
Redis 作为缓存工具,凭借毫秒级响应、丰富数据类型和灵活扩展能力,成了 Docker 化应用的常用选择,特别适合需要快速读写数据的场景,比如会话存储、计数器等。实际使用中,Docker 部署 Redis 确实方便,但要注意配置持久化参数,否则容器重启可能丢数据。本地测试没问题,远程管理则需解决网络访问问题。
本文主要介绍如何在 Ubuntu 使用 Docker 部署 Redis 容器并结合内网穿透工具实现无公网 IP 环境远程访问本地数据库。
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
查看镜像命令:
sudo docker images
可以看到成功拉取了 Redis 镜像。
3. 启动 Redis 容器
在启动容器前,需要简单修改一下 Redis 外部挂载的配置文件。
本教程中,首先创建了 /usr/local/redis/conf/redis.conf 文件,然后使用 nano 编辑器写入了 redis.conf 文件,保存后退出编辑器。
配置文件内容如下:
# 任何 ip 可以访问
bind 0.0.0.0
# 守护进程
daemonize yes
# 不启用保护模式
protected-mode no
# 指定 redis 运行的端口
port 6379
tcp-backlog 511
timeout 0
# 持久化文件名称
dbfilename xdclass.rdb
# 持久化文件存储路径
dir /data/
# 持久化策略,10 秒内有个 1 个 key 改动,执行快照
save 10 1
# rdbcompression yes
# rdbchecksum yes
# appendonly yes
# appendfilename "appendonly.aof"
# appendfsync everysec
# no-appendfsync-on-rewrite no
# auto-aof-rewrite-percentage 100
# auto-aof-rewrite-min-size 64mb
# 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
可以看到刚才创建的 redis 容器正在运行中。
4. 本地连接测试
4.1 安装 Redis 图形化界面工具
如果我们已经在 Docker 中本地部署了 Redis 容器,如果要在本地进行连接测试,可以下载 Redis 图形化界面工具:Redis Desktop Manager。
4.2 使用 RDM 连接测试
默认安装完成后,点击左下红框位置的连接 Redis Server 按钮。
在弹出的窗口中,需要填入本机 IP 地址和 Redis 的端口号:
输入后点击连接测试,如看到弹出框提示成功连接,即本地连接 Redis 测试成功。
5. 公网远程访问本地 Redis
不过我们目前只能在本地使用刚刚部署的 Redis,如果身在异地,想要远程访问在本地部署的 Redis 容器,但又没有公网 IP 怎么办呢?
我们可以使用内网穿透工具来实现无公网 IP 环境下的远程访问需求。
5.1 内网穿透工具安装
下面是安装内网穿透工具步骤:
- 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 向系统添加服务
sudo systemctl enable cpolar
- 启动 cpolar 服务
sudo systemctl start cpolar
内网穿透工具安装成功后,在外部浏览器上访问 Linux 的 9200 端口即:【http://服务器的局域网 IP:9200】,使用账号登录,登录后即可看到 Web 配置界面,接下来在 Web 管理界面配置即可。
5.2 创建远程连接公网地址
登录 Web UI 管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,注意不要与已有的隧道名称重复,本例使用了:redis
- 协议:TCP
- 本地地址:6379
- 端口类型:随机临时 TCP 端口
- 地区:选择 China Top
点击 创建。
创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑(异地)上,将该地址与端口号分别复制到 Redis Desktop Manager 访问即可。
如下图所示,IP 地址位置填写公网地址,端口号填写对应端口,点击链接测试。
可以看到连接成功!
小结
为了方便演示,我们在上边的操作过程中使用了内网穿透工具生成的 TCP 公网地址隧道,其公网地址是随机生成的。
这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,这个地址在 24 小时内会发生随机变化,更适合于临时使用。
如果有长期远程访问 Redis 的需求,但又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择使用固定的 TCP 地址的方式来远程访问。
5.3 使用固定 TCP 地址远程访问
接下来保留一个固定 TCP 地址,点击左侧的预留,找到保留的 TCP 地址,为远程服务器连接保留一个固定的地址:
- 地区:选择 China VIP
- 描述:即备注,可自定义,本例使用 red123
点击 保留。
地址保留成功后,复制生成的公网地址,打开 Web UI 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到我们刚才创建的随机公网地址隧道 redis,点击 编辑。
修改隧道信息,将刚才保留成功的固定 TCP 地址配置到隧道中:
- 端口类型:选择固定 TCP 端口
- 预留的 TCP 地址:复制粘贴官网保留成功的地址,本例中为:1.tcp.vip.cpolar.cn:23876
点击 更新。
隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新为了 固定 TCP 地址。
接下来与之前的操作一样,可以在其他电脑(异地)上,使用这个固定的 TCP 地址访问 Redis 即可。
IP 地址位置填写:1.tcp.vip.cpolar.cn,端口号填写:23876,点击链接测试。
可以看到,使用固定的 TCP 地址成功远程连接了本地 Redis!使用内网穿透工具无需购买域名服务器,也不用设置路由器那么麻烦,轻松实现大家在公网远程访问本地服务的需求!
Redis 搭配 Docker 提升部署效率,再加上内网穿透工具的远程访问能力,让缓存管理在分布式环境中更灵活,适合各类需要高效数据处理的场景。

