> 技术文档 > 使用 Docker 安装 Redis 的完整指南

使用 Docker 安装 Redis 的完整指南

更新说明:本文基于Redis 8.0.2稳定版本,通过Docker容器技术实现快速部署,重点讲解配置文件优化与安全加固方案,适用于生产环境部署参考。

一、环境准备

1.1 系统要求

  • Linux系统(CentOS 7+/Ubuntu 20.04+)
  • Docker 20.10.0+
  • Docker Compose 1.29.0+

1.2 软件版本

  • Redis: 6.2.6
  • 持久化存储:AOF + RDB混合模式
  • 安全策略:密码认证 + 防火墙限制

二、部署流程

2.1 拉取官方镜像

# 拉取指定版本镜像docker pull redis:8.0.2# 验证镜像docker images -a# 输出示例:# REPOSITORY TAG IMAGE ID CREATED SIZE# redis 8.0.2 7614ae9453d1 23 months ago 113MB

2.2 创建配置体系

目录结构规划
mkdir -p /home/redis/{conf,data,logs}touch /home/redis/conf/redis.config
配置文件详解(redis.config
# ================== 安全与访问控制 ==================# 允许外部访问(注释掉 bind 可接受所有IP连接)# bind 127.0.0.1# Redis 监听端口port 6379# 设置客户端连接密码:yourPossword替换自己密码(如不需要可删除该行)requirepass yourPossword# ================== 运行模式与进程管理 ==================# 在 Docker 中建议设置为 no(避免与容器运行冲突)daemonize no# PID 文件路径(仅当 daemonize 为 yes 时有效)# pidfile /home/redis/run/redis6379.pid# ================== 持久化配置(RDB) ==================# 快照保存策略(在指定时间内发生指定次数写操作则保存)save 900 1save 300 10save 60 10000# 是否压缩 RDB 文件rdbcompression yes# RDB 快照文件名dbfilename dump.rdb# 数据持久化目录(需挂载宿主机目录)dir /home# ================== AOF 持久化配置 ==================appendonly yesappendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb# ================== 性能与资源管理 ==================# 最大客户端连接数maxclients 10000# TCP 连接队列大小(用于应对突发连接请求)tcp-backlog 511# 客户端空闲超时时间(单位:秒),设为 0 表示永不超时timeout 60# TCP 保持连接检测间隔(单位:秒)tcp-keepalive 300# ================== 数据库与内存优化 ==================# 设置数据库数量(默认为 16 个,编号 0~15)databases 16# 内存优化参数(适用于小对象存储)hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-entries 512list-max-ziplist-value 64set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64# ================== 日志配置 ==================# 是否启用系统日志(syslog)syslog-enabled yes# 日志记录级别(debug, verbose, notice, warning)loglevel notice# 日志输出位置(stdout 表示标准输出,容器中通常为日志采集服务)logfile stdout# 可选:自定义日志文件路径(需确保目录存在且可写)# logfile /var/log/redis/redis-server.log# ================== 慢查询日志设置 ==================# 记录执行时间超过指定微秒的命令(单位:微秒)slowlog-log-slower-than 10000# 慢查询日志最大长度(超出后 FIFO 覆盖)slowlog-max-len 128# ================== 其他高级选项(按需启用) ==================# 是否启用 active rehashing(释放内存)activerehashing yes# 命令重命名(用于安全加固,如禁用 CONFIG 命令)# rename-command CONFIG \"\"

2.2启动容器服务

完整部署命令
docker run -p 6379:6379 \\ --name redis \\ -v /home/redis/conf/redis.config:/etc/redis/redis.conf \\ -v /home/redis/data:/data \\ -v /home/redis/logs:/logs \\ --privileged=true \\ --restart=always \\ -d redis \\ redis-server:8.0.2 /etc/redis/redis.conf

参数解析

参数 作用 -d 后台运行 --privileged 赋予容器特权模式 -p 端口映射 -v 卷挂载(配置/数据/日志) --restart=always 自动重启策略

 三、验证与调试

3.1 容器状态检查

# 查看运行状态docker ps -a# 输出示例:# CONTAINER ID IMAGE COMMAND  CREATED STATUS PORTS # a34aff536643 redis:8.0.2 \"docker-entrypoint.s…\" 59 seconds ago Up 58 seconds 6379/tcp 6379/tcp

3.2 客户端连接测试

# 进入容器docker exec -it redis6.2.6 bash# 启动客户端redis-cli# 认证操作127.0.0.1:6379> AUTH yourPassWordOK# 测试写入127.0.0.1:6379> SET test_key \"Hello Redis\"OK# 验证读取127.0.0.1:6379> GET test_key\"Hello Redis\"

四、安全加固

4.1 防火墙配置

# 开放端口firewall-cmd --zone=public --add-port=6379/tcp --permanentfirewall-cmd --reload# 验证开放firewall-cmd --list-all | grep ports

4.2 访问控制

  • 网络层:阿里云/腾讯云控制台限制IP白名单
  • 应用层:通过bind指令限制监听地址
  • 认证层:强制密码验证+命令重命名

五、常见问题排查

5.1 启动失败解决方案

# 查看容器日志docker logs redis --tail 50# 常见错误及处理:1. 配置文件路径错误 → 检查-v参数映射2. 端口冲突 → 修改-p参数端口号3. 权限不足 → 添加--privileged参数

5.2 内存溢出处理

  • 监控used_memory指标

  • 优化maxmemory-policy策略

  • 使用Redis Cluster分片集群六、性能优化建议

六、性能优化建议

优化维度 推荐方案 内存管理 启用maxmemory+合适的淘汰策略 持久化 AOF+RDB混合模式 连接池 客户端设置合理超时时间 网络 使用Pipeline批量操作 监控 集成Prometheus+Grafana

七、扩展部署方案

7.1 主从复制架构

# 从节点配置片段slaveof  6379masterauth yourpossword

7.2 高可用集群

使用Docker Compose部署3节点集群:

version: \'3\'services: redis-node-1: image: redis:8.0.2 ports: - \"6380:6379\" command: redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000

扩展阅读

  • Redis官方文档