Redis的Docker安装
在 Docker 中部署 Redis 非常简单,且便于管理和迁移。以下是详细的操作指南,包括基础部署、持久化配置、密码设置及日常管理:
一、拉取 Redis 镜像
从 Docker Hub 拉取官方 Redis 镜像,可指定版本(如6.2
、7.0
,默认拉取latest
最新版):
bash
# 拉取最新版
docker pull redis# 拉取指定版本(如6.2)
docker pull redis:6.2
验证拉取结果:
bash
docker images | grep redis
# 输出示例:redis 6.2 xxxxxxxx 1 week ago 113MB
二、基础部署:启动 Redis 容器
1. 简单启动(无持久化,适合测试)
bash
docker run -d \--name redis \-p 6379:6379 \--restart=always \redis:6.2
2. 带持久化的启动(生产环境推荐)
Redis 默认数据存储在内存中,容器重启后数据会丢失。需通过数据卷挂载实现持久化(将 Redis 数据目录映射到主机):
bash
docker run -d \--name redis \-p 6379:6379 \-v /data/redis:/data \ # 挂载数据目录(容器内/data → 主机/data/redis)--restart=always \redis:6.2 \redis-server --appendonly yes # 开启AOF持久化(数据实时写入磁盘)
参数说明:
参数 | 作用 |
---|---|
--name redis | 容器名称(自定义) |
-p 6379:6379 | 端口映射(主机 6379 → 容器 6379,Redis 默认端口) |
-v /data/redis:/data | 持久化数据:容器内/data (Redis 默认数据目录)映射到主机/data/redis |
--restart=always | 容器退出时自动重启 |
redis-server --appendonly yes | 启动 Redis 服务并开启 AOF(Append Only File)持久化(数据变更实时写入文件) |
三、高级配置:自定义 Redis 参数
如需设置密码、修改内存限制等,可通过两种方式配置:
方法 1:通过命令行参数(适合简单配置)
bash
docker run -d \--name redis \-p 6379:6379 \-v /data/redis:/data \--restart=always \redis:6.2 \redis-server \--appendonly yes \ # 开启AOF持久化--requirepass your_password \ # 设置连接密码(替换为你的密码)--maxmemory 1024mb \ # 限制最大内存为1GB--maxmemory-policy allkeys-lru # 内存满时删除最近最少使用的键
方法 2:通过自定义配置文件(适合复杂配置)
-
创建配置文件:在主机创建
redis.conf
(可从Redis 官方配置模板下载修改),关键配置示例:conf
appendonly yes # 开启AOF持久化 requirepass your_password # 连接密码 maxmemory 1024mb # 最大内存 maxmemory-policy allkeys-lru # 内存淘汰策略 bind 0.0.0.0 # 允许所有IP访问(容器内需开启,否则外部无法连接)
-
启动容器时挂载配置文件:
bash
docker run -d \--name redis \-p 6379:6379 \-v /data/redis:/data \-v /etc/redis/redis.conf:/etc/redis/redis.conf \ # 挂载配置文件--restart=always \redis:6.2 \redis-server /etc/redis/redis.conf # 指定使用挂载的配置文件
四、容器管理与操作
1. 连接 Redis 服务
-
方式 1:通过容器内客户端连接:
bash
# 进入容器 docker exec -it redis /bin/bash# 连接Redis(若设置了密码,需输入密码) redis-cli 127.0.0.1:6379> auth your_password # 输入密码(若有) 127.0.0.1:6379> set test "hello" # 测试设置键值对 127.0.0.1:6379> get test # 读取键值
-
方式 2:从主机直接连接:
bash
# 需先在主机安装redis-cli(如Ubuntu:sudo apt install redis-tools) redis-cli -h 127.0.0.1 -p 6379 -a your_password
2. 查看容器状态与日志
bash
# 查看状态
docker ps | grep redis# 查看实时日志
docker logs -f redis
3. 停止 / 重启 / 删除容器
bash
# 停止
docker stop redis# 重启
docker restart redis# 删除(需先停止)
docker rm redis
五、数据备份与恢复
由于已通过-v
挂载数据卷,数据存储在主机/data/redis
目录,直接备份该目录即可:
bash
# 备份数据(压缩为tar包)
tar -zcvf /backup/redis_data_$(date +%Y%m%d).tar.gz /data/redis# 恢复数据(替换现有数据,需先停止容器)
docker stop redis
rm -rf /data/redis/* # 清空现有数据(谨慎操作)
tar -zxvf /backup/redis_data_20231017.tar.gz -C / # 解压备份到根目录(会自动恢复到/data/redis)
docker start redis
六、常见问题解决
1. 外部无法连接 Redis
- 检查端口映射是否正确:
-p 6379:6379
- 配置文件中是否绑定了
0.0.0.0
(bind 0.0.0.0
),避免只绑定127.0.0.1
- 服务器防火墙是否开放 6379 端口(如 Ubuntu:
sudo ufw allow 6379
)
2. 忘记 Redis 密码
- 方法 1:停止容器,删除并重新创建(用新密码,数据卷不变则数据保留)
- 方法 2:修改配置文件(移除
requirepass
行),重启容器后重置密码:bash
# 进入容器后执行 redis-cli 127.0.0.1:6379> config set requirepass new_password # 设置新密码
3. 数据卷权限错误
主机挂载目录权限不足导致 Redis 无法写入数据:
bash
# 修复权限(Redis容器内默认用户ID为999)
sudo chown -R 999:999 /data/redis
sudo chmod -R 755 /data/redis