20
0
0

Docker 部署 Redis 7.2:几行命令起一个可持久化缓存

2026-10-27
2026-10-30
文章摘要
|

背景与目标

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,功能完整。

实操截图

容器运行

ScreenShot_2026-10-29_092526_387.png

工具访问

ScreenShot_2026-10-29_092559_578.png
ScreenShot_2026-10-29_092613_000.png

小结与参考

  • 用 Docker 部署 Redis 7.2,把平台差异丢给官方镜像,本机只留一份 docker-compose.yaml。

  • 持久化双保险:--appendonly yes(AOF)+ 挂载 ./redis-data:/data,重启不丢 key。

  • 密码用 --requirepass 设好,客户端连接时记得带上。

  • 端口被占改外部端口即可,内部固定 6379。

  • Windows 没有官方原生 Redis,Docker 是最省心的装法。

参考:

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或者给予支持!

Docker 部署 Redis 7.2:几行命令起一个可持久化缓存
/archives/docker-bu-shu-redis-7.2-ji-xing-ming-ling-qi-yi-ge-ke-chi-jiu-hua-huan-cun
作者
隔壁老陈
发布于
2026-10-27
许可协议
CC BY-NC-SA 4.0

评论