Docker 安装 Redis

Docker 安装 Redis 是开发/生产环境中最常用的方式,核心是在线拉取镜像 + 自定义配置 + 数据持久化 (避免容器销毁丢失数据)。以下是完整的在线安装步骤(适配 Linux/macOS,Windows 仅需微调路径),兼顾开发和生产级配置。

一、前提条件

已安装 Docker 环境(验证:docker --version 输出版本号),若未安装,执行以下命令(以 CentOS 为例):

bash 复制代码
# 一键安装 Docker(国内源)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 启动 Docker 并设置开机自启
systemctl start docker && systemctl enable docker

二、步骤 1:拉取 Redis 镜像(推荐指定版本)

避免使用 latest 标签(易踩版本兼容坑),推荐拉取稳定版(如 7.2、6.2):

bash 复制代码
# 拉取 Redis 7.2 稳定版(可替换为 6.2、7.0 等)
docker pull redis:7.2

# 验证镜像是否拉取成功
docker images | grep redis
# 输出示例:redis   7.2   xxxxxxxx   2 hours ago   130MB

三、步骤 2:准备持久化目录和自定义配置(关键)

Redis 默认数据存储在容器内部,容器删除后数据丢失,需挂载宿主机目录实现持久化,同时自定义配置(如密码、访问权限)。

1. 创建宿主机目录(数据、配置、日志)
bash 复制代码
# 创建目录(建议统一放在 /data/redis 下)
mkdir -p /data/redis/{conf,data,logs}
# 赋予读写权限(避免容器无权限操作)
chmod 777 -R /data/redis
2. 编写自定义 redis.conf 配置文件

核心配置需覆盖访问权限、密码、持久化、内存限制,避免默认配置的安全风险:

bash 复制代码
# 写入配置文件到 /data/redis/conf/redis.conf
cat > /data/redis/conf/redis.conf << EOF
# 允许所有IP访问(生产环境可改为内网IP,如 192.168.1.0/24)
bind 0.0.0.0
# 关闭保护模式(否则仅本地能访问)
protected-mode no
# 端口(默认6379,可自定义)
port 6379
# 设置Redis密码(必填,避免未授权访问)
requirepass 123456
# 持久化:开启AOF(追加日志,比RDB更安全)
appendonly yes
# 每秒刷盘一次(平衡性能和数据安全)
appendfsync everysec
# 持久化:RDB快照(兜底,每5分钟/至少1个修改触发快照)
save 300 1
# 数据存储目录(容器内路径,需和挂载目录对应)
dir /data
# 日志文件路径
logfile /logs/redis.log
# 内存限制(按需设置,如 1GB,避免占满服务器内存)
maxmemory 1gb
# 内存淘汰策略(内存满时删除最少使用的Key)
maxmemory-policy allkeys-lru
# 容器内无需后台运行(由Docker -d参数接管)
daemonize no
EOF

四、步骤 3:启动 Redis 容器(生产级参数)

执行以下命令启动容器,每个参数都有明确作用,建议保留核心参数:

bash 复制代码
docker run -d \
  --name redis \                  # 容器名称(自定义,如 redis-7.2)
  --restart=always \              # 开机自启 + 容器异常时自动重启
  -p 6379:6379 \                  # 端口映射:宿主机6379 → 容器6379
  -v /data/redis/conf/redis.conf:/etc/redis/redis.conf \  # 挂载自定义配置
  -v /data/redis/data:/data \     # 挂载数据目录(持久化核心)
  -v /data/redis/logs:/logs \     # 挂载日志目录
  --privileged=true \             # 赋予容器特权(解决目录权限问题)
  redis:7.2 \                     # 使用的镜像版本
  redis-server /etc/redis/redis.conf  # 指定配置文件启动(覆盖默认配置)

五、步骤 4:验证 Redis 运行状态

1. 检查容器是否启动
bash 复制代码
docker ps | grep redis
# 输出示例:xxxx redis:7.2 redis-server /etc/redis/redis.conf   Up 5 minutes
# 若未启动,执行 docker logs redis 查看错误日志
2. 测试 Redis 连接和操作
bash 复制代码
# 进入Redis容器的命令行客户端
docker exec -it redis redis-cli

# 输入密码认证(配置的 123456)
127.0.0.1:6379> AUTH 123456
OK

# 测试基本操作
127.0.0.1:6379> SET test "docker-redis"  # 设置Key-Value
OK
127.0.0.1:6379> GET test                 # 获取Value
"docker-redis"
127.0.0.1:6379> KEYS *                   # 查看所有Key
1) "test"

# 验证持久化:停止并重启容器,数据仍存在
docker stop redis && docker start redis
docker exec -it redis redis-cli AUTH 123456 && GET test
# 输出 "docker-redis" 说明持久化成功

六、常用操作(运维必备)

bash 复制代码
# 1. 进入Redis容器(执行Linux命令)
docker exec -it redis /bin/bash

# 2. 查看Redis实时日志
docker logs -f redis
# 或直接查看宿主机日志文件
cat /data/redis/logs/redis.log

# 3. 重启/停止/删除容器
docker restart redis  # 重启
docker stop redis     # 停止
docker rm -f redis    # 强制删除(需先停止)

# 4. 升级Redis版本(不丢数据)
# ① 停止旧容器 → ② 拉取新版本镜像 → ③ 用相同挂载目录启动新容器
docker stop redis && docker rm redis
docker pull redis:7.4
docker run -d --name redis --restart=always -p 6379:6379 -v /data/redis/conf/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -v /data/redis/logs:/logs redis:7.4 redis-server /etc/redis/redis.conf

# 5. 备份Redis数据(持久化目录打包)
tar -zcvf redis-data-backup.tar.gz /data/redis/data

七、常见问题排查

1. 容器启动失败(docker ps 无输出)
  • 查看日志:docker logs redis,常见原因:
    • 配置文件语法错误:检查 redis.conf 格式(如少分号、空格);
    • 端口被占用:netstat -tulpn | grep 6379,杀掉占用进程或修改映射端口(如 -p 6380:6379);
    • 目录权限不足:重新执行 chmod 777 -R /data/redis
2. 外部无法访问Redis(如Spring Boot连接失败)
  • 检查防火墙:放行6379端口(CentOS):

    bash 复制代码
    firewall-cmd --add-port=6379/tcp --permanent && firewall-cmd --reload
  • 检查云服务器安全组:若为云服务器(阿里云/腾讯云),需在控制台放行6379端口;

  • 检查配置:确认 redis.confbind 0.0.0.0protected-mode no

3. 数据持久化失效
  • 确认挂载目录对应:容器内 dir /data 需对应宿主机 -v /data/redis/data:/data
  • 查看AOF/RDB文件是否生成:ls /data/redis/data,应有 appendonly.aof(AOF文件)、dump.rdb(RDB文件);
  • 检查容器日志:docker logs redis | grep "appendonly",确认AOF开启成功。
4. Redis内存占用过高
  • 调整 redis.conf 中的 maxmemory(如改为 512mb),重启容器;
  • 执行 docker exec -it redis redis-cli AUTH 123456 && CONFIG SET maxmemory 536870912(临时生效,重启后需改配置文件);
  • 清理无用Key:docker exec -it redis redis-cli AUTH 123456 && FLUSHDB(清空当前库)。

八、生产环境优化建议

  1. 禁用公网访问 :将 bind 0.0.0.0 改为内网IP(如 192.168.1.100),仅允许应用服务器访问;
  2. 加强密码复杂度 :使用随机复杂密码(如 P8@k9s7L2#),避免弱密码;
  3. 限制容器资源 :启动时添加 --memory=2g --cpus=1,限制Redis使用的内存和CPU;
  4. 开启Redis集群 :若需高可用,使用 docker-compose 部署Redis主从/哨兵集群;
  5. 定期备份 :定时打包 /data/redis/data 目录,防止数据丢失。

总结

Docker 安装 Redis 的核心流程:
拉取指定版本镜像 → 准备持久化目录 + 自定义配置 → 挂载目录启动容器 → 验证连接和持久化

重点关注:密码配置、持久化挂载、访问权限,这三点能解决90%的生产环境问题。该方案适配开发、测试、生产全场景,可直接复用。

相关推荐
流星白龙7 分钟前
【Redis】8.List列表
redis
NWU_白杨13 分钟前
三种常用的数据存储技术
数据库·redis·mysql·sqlite
hay_lee32 分钟前
Kubernetes StatefulSet:OrderedReady 极简指南
云原生·容器·kubernetes
晚风吹长发1 小时前
Docker使用——Docker容器及相关命令
linux·运维·服务器·docker·容器·架构
ShiXZ2131 小时前
Docker Compose 安装与配置指南
运维·docker·容器
正儿八经的少年1 小时前
redis 的大 key 和热 key 详解
数据库·redis·缓存
BullSmall2 小时前
Anolis OS 8.10 Docker 部署 SonarQube 9.9 完整教程
运维·docker·容器
X-⃢_⃢-X2 小时前
十、Redis之布隆过滤器
数据库·redis·缓存
流星白龙3 小时前
【Redis】1.Redis特性
数据库·redis·缓存
java_logo6 小时前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris