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安装LNMP环境的详细过程(可部署TP项目)

    Docker安装LNMP环境的详细过程(可部署TP项目)

    这篇文章主要介绍了Docker安装LNMP环境的详细过程(可部署TP项目),主要包括安装docker,安装nginx,安装php的命令详解,需要的朋友可以参考下
    2022-06-06
  • 安装docker-ce报错yum仓库错误问题及解决

    安装docker-ce报错yum仓库错误问题及解决

    安装Docker-CE时,可能会因依赖软件版本不足导致报错,解决方法包括使用yum update更新软件包,若仓库无该包则需更新repo源,也可通过yum install -y docker-ce --skip-broken跳过依赖更新直接安装,若遇yum命令执行报错
    2024-11-11
  • 宿主机无法访问docker容器中nginx服务的问题解决

    宿主机无法访问docker容器中nginx服务的问题解决

    在虚拟机中部署Docker并安装Nginx后,宿主机无法访问容器内的Nginx服务,通过检查端口映射、防火墙状态、进入容器内部启动Nginx以及检查/修改内核的IP转发设置,解决了该问题,感兴趣的可以了解一下
    2024-11-11
  • Docker部署Django的详细指南

    Docker部署Django的详细指南

    部署Django应用到Docker中的详细步骤是一个较为复杂的过程,涉及到许多技术和工具的结合使用,本文将详细介绍如何从零开始使用Docker部署Django应用,感兴趣的小伙伴跟着小编一起来看看吧
    2024-12-12
  • docker自定义网桥docker0及docker的开启,关闭,重启命令操作

    docker自定义网桥docker0及docker的开启,关闭,重启命令操作

    这篇文章主要介绍了docker自定义网桥docker0及docker的开启,关闭,重启命令操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker安装mysql教程以及解决mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘问题

    Docker安装mysql教程以及解决mysqld: Can‘t read dir&nbs

    本文详细介绍了如何通过Docker来安装和配置MySQL数据库,包括拉取MySQL镜像、启动MySQL容器、配置MySQL、解决常见错误等步骤,提供了详尽的命令和参数说明,帮助用户顺利完成MySQL的安装和配置,文中还提到了如何处理MySQL容器启动时遇到的“无法读取目录”
    2024-10-10
  • 详解使用Docker部署MySQL(数据持久化)

    详解使用Docker部署MySQL(数据持久化)

    这篇文章主要介绍了详解使用Docker部署MySQL(数据持久化),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • docker-compose部署sonarqube全过程

    docker-compose部署sonarqube全过程

    本文介绍了如何使用docker-compose部署sonarqube,并详细说明了部署过程中需要注意的事项,包括数据库选择、插件安装等
    2025-12-12
  • docker-compose搭建etcd集群的实现(三节点)

    docker-compose搭建etcd集群的实现(三节点)

    本文主要介绍了docker-compose搭建etcd集群的实现(三节点),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Docker镜像大小查看和排序方法小结

    Docker镜像大小查看和排序方法小结

    在 Docker 日常使用中,随着镜像数量的增加,磁盘空间管理变得尤为重要,了解如何有效地查看和排序 Docker 镜像大小不仅可以帮助我们释放宝贵的磁盘空间,还能优化容器的构建和部署流程,所以本文给大家总结了Docker镜像大小查看和排序方法,需要的朋友可以参考下
    2025-05-05

最新评论