Docker部署Redis实现密码访问+数据持久化(服务器版)

 更新时间:2026年04月22日 15:05:33   作者:Goya!  
本文主要介绍了Docker部署Redis实现密码访问+数据持久化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

今天是Docker部署系列的第二篇文章:用Docker部署Redis。

Redis是开发中最常用的缓存数据库,搭配上一期的MySQL,基本就能满足大部分项目的需求了。

本篇要点:

  • ✅ 一分钟启动Redis
  • ✅ 设置访问密码
  • ✅ 数据持久化(防止重启丢数据)
  • ✅ 配置文件自定义
  • ✅ 远程客户端连接测试

一、准备工作

1.1 检查Docker环境

首先确认服务器上已经安装了Docker:

docker --version

能看到版本号即可。如果没有安装,请参考官方文档安装Docker。

1.2 拉取Redis镜像

我们选择最新的稳定版Redis 7:

docker pull redis:7

查看镜像是否拉取成功:

docker images | grep redis

二、创建挂载目录

在宿主机上创建目录,存放Redis的数据和配置:

# 创建数据目录和配置目录
mkdir -p ~/docker/redis/data
mkdir -p ~/docker/redis/config

目录说明:

  • ~/docker/redis/data:存放RDB/AOF持久化文件
  • ~/docker/redis/config:存放redis.conf配置文件

三、准备Redis配置文件

3.1 下载官方配置文件模板

# 从官方GitHub下载最新配置文件
curl -o ~/docker/redis/config/redis.conf https://raw.githubusercontent.com/redis/redis/7.0/redis.conf

3.2 修改配置文件

下载完成后,用vim编辑配置文件:

vim ~/docker/redis/config/redis.conf

需要修改或确认以下关键配置:

# 绑定所有网卡(允许远程连接)
bind 0.0.0.0
# 保护模式(开启密码后可以关闭)
protected-mode no
# 端口号
port 6379
# 设置密码(重要!生产环境必须设置)
requirepass 123456
# 持久化配置
# RDB持久化(每隔60秒如果至少有1个key变化,就生成快照)
save 60 1
# 持久化文件名
dbfilename dump.rdb
# 持久化文件目录
dir /data
# AOF持久化(追加日志,更安全但文件更大)
appendonly yes
appendfilename "appendonly.aof"
# 每秒钟同步一次
appendfsync everysec
# 最大内存限制(根据实际情况调整)
maxmemory 256mb
# 内存淘汰策略(volatile-lru:从已设置过期时间的key中淘汰最近最少使用的)
maxmemory-policy volatile-lru

配置说明:

  • requirepass:访问密码,一定要设置
  • save 60 1:60秒内有1个key变化就持久化
  • appendonly yes:开启AOF持久化
  • maxmemory:限制内存使用,防止Redis占满服务器内存

保存退出(vim操作:按ESC,输入:wq回车)。

四、运行Redis容器

4.1 使用配置文件启动

docker run -d \
  --name redis7 \
  -p 6379:6379 \
  -v ~/docker/redis/data:/data \
  -v ~/docker/redis/config/redis.conf:/usr/local/etc/redis/redis.conf \
  --restart=always \
  redis:7 \
  redis-server /usr/local/etc/redis/redis.conf

4.2 验证容器是否启动

# 查看容器状态
docker ps

应该能看到redis7容器,状态是Up

4.3 查看容器日志

docker logs redis7

看到Ready to accept connections就说明启动成功了。

五、在服务器上验证Redis

5.1 进入容器连接Redis

# 直接连接Redis(一步到位)
docker exec -it redis7 redis-cli -a 123456

5.2 测试Redis命令

连接成功后,试试几个基本命令:

# 设置一个key
set name "docker redis"
# 获取key
get name
# 应该输出: "docker redis"
# 查看所有key
keys *
# 查看Redis信息
info server

能看到redis_version:7.x之类的信息,说明一切正常!

5.3 测试数据持久化

验证重启容器后数据是否还在:

# 先写入一些数据
set user:1 "张三"
set user:2 "李四"
set counter 100
# 退出Redis
exit
# 重启容器
docker restart redis7
# 再次连接查看数据
docker exec -it redis7 redis-cli -a 123456
# 查看之前写入的key
get user:1
# 应该还能看到"张三"

如果数据还在,说明持久化配置生效了!

六、配置服务器防火墙/安全组

6.1 检查防火墙类型

# 你的服务器输出显示没有firewall-cmd
# 说明用的是UFW(Ubuntu默认防火墙)或者没有开启防火墙

6.2 如果是UFW防火墙

# 查看防火墙状态
ufw status
# 开放6379端口
ufw allow 6379/tcp
# 重启防火墙
ufw reload

6.3 如果是云服务器(阿里云/腾讯云等)

需要在控制台的安全组中开放6379端口:

1.登录云服务商控制台

2.找到你的实例对应的安全组

3.添加入方向规则:

  • 端口范围:6379
  • 授权对象:0.0.0.0/0(允许所有IP,或指定你的本地IP)
  • 协议:TCP

安全建议:生产环境不要直接开放给所有IP,建议只允许你的办公网络IP访问。

七、常用Redis命令和Docker操作

7.1 Docker操作Redis

# 停止容器
docker stop redis7
# 启动容器
docker start redis7
# 重启容器
docker restart redis7
# 查看实时日志
docker logs -f redis7
# 进入容器
docker exec -it redis7 bash
# 删除容器(数据还在,因为挂载到宿主机了)
docker rm -f redis7

8.2 Redis命令行常用操作

# 带密码登录
redis-cli -a 密码
# 选择数据库(默认0-15)
select 1
# 查看所有key
keys *
# 查看key类型
type key名
# 设置过期时间(秒)
expire key名 60
# 查看剩余时间
ttl key名
# 删除key
del key名
# 清空当前数据库
flushdb
# 清空所有数据库(慎用!)
flushall

八、常见问题排查

Q1:容器启动失败

# 查看错误日志
docker logs redis7

Q2:连接被拒绝(Connection refused)
可能原因:

  • Redis没启动:docker ps查看容器状态
  • 端口没映射对:检查-p 6379:6379
  • 防火墙没开:检查UFW/安全组配置

Q3:连接报错"NOAUTH Authentication required"
没有输入密码,或者密码错误:

# 登录时指定密码
redis-cli -a 你的密码
# 或者登录后认证
redis-cli
auth 你的密码

Q4:远程连接不上,但服务器本地可以
检查:

1.配置文件中的bind是否设置为0.0.0.0

2.防火墙是否开放了6379端口

3.云服务器安全组是否添加了规则

Q5:重启容器后数据丢了
检查持久化配置是否生效:

# 进入容器查看配置
docker exec -it redis7 redis-cli -a 123456
# 查看持久化配置
config get save
config get appendonly

如果appendonly是no,说明AOF没开。检查配置文件是否正确挂载。

九、性能测试(可选)

Redis自带了性能测试工具redis-benchmark:

# 进入容器
docker exec -it redis7 bash
# 运行性能测试(100个并发,10000个请求)
redis-benchmark -a 123456 -n 10000 -c 100
# 测试结果示例:
# SET: 45000 requests per second
# GET: 48000 requests per second

每秒几万次的读写,这就是Redis为什么这么快!

十、总结

通过本文,我们成功在服务器上实现了:

  • ✅ Docker一键部署Redis 7
  • ✅ 设置密码保护
  • ✅ 配置RDB+AOF双重持久化
  • ✅ 数据挂载到宿主机
  • ✅ 服务器本地验证
  • ✅ 配置防火墙/安全组支持远程连接

现在你的Redis已经跑起来了,可以作为缓存、计数器、session存储等使用!

到此这篇关于Docker部署Redis实现密码访问+数据持久化(服务器版)的文章就介绍到这了,更多相关Docker部署Redis密码访问+数据持久化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用docker compose一键部署多个服务的方法

    使用docker compose一键部署多个服务的方法

    docker compose 是 docker 官方的开源项目,用来实现对 docker 容器集群的快速编排,通过docker-compose可以一键创建和删除多个容器 ,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-01-01
  • docker实现导出、导入和数据搬迁

    docker实现导出、导入和数据搬迁

    本篇文章主要介绍了docker实现导出、导入和数据搬迁,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Docker系统空间占用过大的清理方法详解

    Docker系统空间占用过大的清理方法详解

    在日常使用 Docker 的过程中,我们经常会发现服务器磁盘空间莫名其妙地被占满,特别是 /var/lib/docker/overlay2 目录动辄几十个 G,下面我们就来看看如何清理吧
    2025-11-11
  • 使用docker离线部署dify之docker镜像问题及部署过程

    使用docker离线部署dify之docker镜像问题及部署过程

    这篇文章主要给大家介绍了关于使用docker离线部署dify之docker镜像问题及部署过程,通过配置多个镜像源解决了,此外还介绍了如何将Dify镜像转移到离线环境并启动服务,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • Dockerfile打包部署详细图文教程

    Dockerfile打包部署详细图文教程

    这篇文章主要介绍了Dockerfile打包部署的相关资料,并详细解释了从创建Dockerfile到启动容器的每一步过程,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • docker中间件部署超详细步骤

    docker中间件部署超详细步骤

    docker是现在很火的一项容器技术,能够帮助来部署我们来快速部署各类环境,这篇文章主要介绍了docker中间件部署的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • docker日志出现无法检索问题的解决

    docker日志出现无法检索问题的解决

    这篇文章主要介绍了docker日志出现无法检索问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • docker如何在mac-m1芯片部署并启用tomcat

    docker如何在mac-m1芯片部署并启用tomcat

    这篇文章主要介绍了docker在mac-m1芯片部署并启用tomcat,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 如何批量删除Docker中已经停止的容器的几种方法

    如何批量删除Docker中已经停止的容器的几种方法

    本文主要介绍了批量删除Docker中已经停止的容器的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Windows Docker部署Kong网关的实现步骤

    Windows Docker部署Kong网关的实现步骤

    Kong是一个轻量级、快速、灵活的云原生API网关,本文主要介绍了Windows Docker部署Kong网关的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03

最新评论