Docker 部署 Redis 7.2:几行命令起一个可持久化缓存
背景与目标
Redis 是自托管应用最常用的缓存 / 消息中间件之一。在个人电脑上装 Redis,Windows 尤其尴尬:官方并没有提供稳定的 Windows 版本,常见的做法是去 GitHub 找第三方移植版(如 tporadowski/redis),版本旧、更新不及时,还会碰到"服务能装却起不来""数据存不住""密码不好配"这类经典问题。
用 Docker 部署就干净多了——官方镜像替你抹平平台差异,Redis 的持久化、密码、存储路径这些最容易被忽略的配置,全部在你看得见的 docker-compose.yaml 里一次定好,可复现、可删可重来。本文给你一份验证过的配置,兼容绝大多数客户端(redis-cli、redis-desktop-manager、各类 SDK)。
提示:本文作者宿主是 Windows (Docker Desktop)。镜像通过华为云镜像站拉取(国内拉取更快更稳)。
步骤
第 0 步:确认 Docker Desktop 已就绪
docker version
docker compose version输出版本号即 OK。
第 1 步:准备目录
mkdir redis && cd redis第 2 步:写 docker-compose.yaml
新建 docker-compose.yaml,整段复制:
services:
redis:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.2-alpine
container_name: redis
command:
- redis-server
- --appendonly yes
- --requirepass YourStrong!Passw0rd
ports:
- "6379:6379"
volumes:
- ./redis-data:/data
restart: unless-stopped要点:
redis:7.2-alpine:Alpine 版镜像更小、启动更快,功能与官方一致。--appendonly yes:开启 AOF 持久化,重启不丢数据(配合/data卷落盘)。--requirepass YourStrong!Passw0rd:设置访问密码,务必换一个强密码。数据卷
./redis-data绑定挂载到容器/data,RDB / AOF 文件都存在这里。
第 3 步:启动
docker compose up -d看日志确认就绪:
docker compose logs -f redis看到 Ready to accept connections 即启动成功。
第 4 步:连接验证
进容器用 redis-cli 连接(-a 后接密码):
docker compose exec redis redis-cli -a YourStrong!Passw0rd进入 127.0.0.1:6379> 提示符后,做一轮读写验证:
set hello world
get hello返回 "world" 即部署成功。退出交互用 exit。
踩坑与解决
1. 容器一启动就退出,报 Can't determine directory for .rdb file
问题:
docker compose up -d后容器秒退,日志报 rdb 目录错误。复现:
docker compose logs redis看到Can't determine directory for .rdb file。根因:容器内工作目录不是
/data,而未挂卷状态下 Redis 写不了默认目录,或目录权限不对。解决:本教程的 yaml 已挂
./redis-data:/data,并在command里显式指定redis-server(避免误走默认配置)。若仍报错,确认宿主目录./redis-data有写权限(Windows 下一般是实例目录本身,通常无需额外设置)。验证:重启后
docker compose logs -f redis出现Ready to accept connections,容器稳定运行。
2. 设了密码,客户端却报 NOAUTH Authentication required
问题:连上后执行命令报
NOAUTH Authentication required。复现:redis-cli / 客户端不带密码直接
get/set,返回(error) NOAUTH Authentication required。根因:设置了
--requirepass后,未登录前多数命令被拒绝;或客户端配置里没带密码。解决:命令行为
redis-cli -a 密码;程序/桌面客户端在连接参数里填redis://:密码@host:6379(或对应 SDK 的 auth 参数)。验证:带密码后
get hello正常返回,不再报 NOAUTH。
3. 数据丢了?(重启后 key 消失)
问题:删容器重建后,之前写入的 key 全没了。
复现:
docker compose down && docker compose up -d后get返回(nil)。根因:没开持久化(默认 RDB 快照策略保守),且没挂数据卷,数据随容器销毁丢失。
解决:yaml 已用
--appendonly yes开 AOF + 挂载./redis-data:/data。数据持久化在你目录下redis-data/。验证:写个 key,
docker compose down再up,get仍在。
4. 端口 6379 被占,启动失败
问题:
docker compose up -d报端口被占用。复现:报
port is already allocated或address already in use。根因:本机已有一个 Redis(之前第三方移植版注册的服务)或其他程序占用 6379。
解决:先停掉旧 Redis 服务;或改外部端口,如
6380:6379,连接时用localhost:6380。验证:
docker compose up -d成功,客户端连新端口正常。
5. Windows 下直接跑 redis-server.exe 起不来(为何值得用 Docker)
问题:在 Windows 上想直接安装/运行官方 Redis 失败。
复现:官网只提供 Linux 编译版,Windows 只能靠第三方移植,常因缺运行库、版本过期、服务注册失败而无法启动。
根因:Redis 官方不维护 Windows 版,原生运行没有可靠渠道。
解决:改用 Docker(本文方案),镜像即官方 Linux 版封装,平台差异由 Docker 抹平。
验证:
docker compose up -d后redis-cli ping返回PONG,功能完整。
实操截图
容器运行

工具访问


小结与参考
用 Docker 部署 Redis 7.2,把平台差异丢给官方镜像,本机只留一份
docker-compose.yaml。持久化双保险:
--appendonly yes(AOF)+ 挂载./redis-data:/data,重启不丢 key。密码用
--requirepass设好,客户端连接时记得带上。端口被占改外部端口即可,内部固定 6379。
Windows 没有官方原生 Redis,Docker 是最省心的装法。
参考:
镜像:
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/redis:7.2-alpineRedis 官方文档:https://redis.io/docs/
Redis 命令参考:https://redis.io/commands/

