Docker环境Redis没挂载保存数据

前言:我们部署的服务部署到compose中了,不知道那个傻波一人员提供的compose中关于redis没提供挂载数据盘,于是就引发了一下事情。

1、确认compose文件内容

bash 复制代码
cat docker-compose.yml

services:
  redis:
    image: docker.io/library/redis:8.6.2
    container_name: redis
    restart: always
    environment:
      - REDIS_PASSWORD=123456
    network_mode: host
    command: redis-server --requirepass 123456

Redis只是简单的配置密码

2、确认Redis数据

bash 复制代码
docker exec redis ls -la /data
total 8
drwxr-xr-x 2 redis redis 4096 Apr 22 01:38 .
drwxr-xr-x 1 root  root  4096 Aug 25 09:27 ..

docker exec -it redis  /bin/sh
# ls
bin  boot  data  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# cd /data
# ls

Redis对应数据没存在/data目录中,说明缓存的数据还是在内存中

3、保存内存数据

bash 复制代码
docker exec redis redis-cli -a 123456  SAVE
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
OK
root@localhost:~/local# docker exec redis ls -la /data
total 68
drwxr-xr-x 1 redis redis  4096 Aug 25 10:05 .
drwxr-xr-x 1 root  root   4096 Aug 25 09:27 ..
-rw------- 1 redis redis 59009 Aug 25 10:05 dump.rdb
root@localhost:~/local# # 创建目标文件夹
root@localhost:~/local# mkdir -p ./services/redis/data
root@localhost:~/local# 
root@localhost:~/local# # 将容器内的 dump.rdb 复制到宿主机挂载目录(注意最后的斜杠和点)
root@localhost:~/local# docker cp redis:/data/dump.rdb ./services/redis/data/
Successfully copied 60.9kB to /usr/local/services/redis/data/
root@localhost:~/local# chown -R 999:999 ./services/redis/data

4、Redis改为持久化5、

一定要用--appendonly no 不能使用yes ,如果使用yes后,Redis 会优先走 AOF 恢复路径,导致 RDB 没有按预期加载

bash 复制代码
cat docker-compose.yml

services:
  redis:
    image: docker.io/library/redis:8.6.2
    container_name: redis
    restart: always
    network_mode: host
    command: redis-server --requirepass 123456 --appendonly no
    volumes:
      - ./services/redis/data:/data

5、重新拉起Redis

bash 复制代码
docker stop redis
docker-compose up -d --force-recreate redis

检查实际启动参数,必须看到 appendonly no:

复制代码
docker inspect redis --format '{{json .Config.Cmd}}'

分别检查数据库key是否还存在:

6、确认恢复后重新启用 AOF

只有在 INFO keyspace 已经确认数据正确后再执行:

复制代码
docker exec -e REDISCLI_AUTH redis redis-cli CONFIG SET appendonly yes

确认 AOF 文件已经产生:

复制代码
find ./services/redis/data -maxdepth 3 -type f -ls

经常看到以下内容:

复制代码
appendonlydir/appendonly.aof.manifest
appendonlydir/*.base.rdb
appendonlydir/*.incr.aof

这时再把 Compose 改回:

复制代码
command: redis-server --requirepass '原密码' --appendonly yes
相关推荐
说实话起个名字真难啊2 小时前
实战docker部署dify及注意点
运维·docker·容器
福建佰胜张工2 小时前
费希尔 FIELDVUE™ DVC6200-AC 智能阀门定位器深度解析:双作用配置、核心参数与典型应用
运维·安全·自动化
小羊没烦恼!2 小时前
分布式事务 | 使用DTM 的Saga 模式
java·linux·运维·数据库·wpf
上海运维Q先生2 小时前
PHP8.3.36升级修复手册----CVE-2026-109618 CVE-2026-109619
运维·php
NailiConveyor3 小时前
输送机机架怎么选材?碳钢、不锈钢、铝型材的成本与适用场景
大数据·运维·自动化·制造·业界资讯
骑着蜗牛撵大象3273 小时前
让 Codex 值夜班:把告警排查与巡检接成可回滚的自动化链路
android·java·运维·ai·自动化·codex·智能体
天远数科3 小时前
零信任架构实战:基于天远企业年报信息核验构建自动化供应商准入资质合规审查网关
运维·人工智能·架构·自动化
闲云自留地3 小时前
K8s Service 全解:服务发现、四种类型、会话保持、金丝雀发布一篇通
容器·kubernetes·服务发现
TangGeeA3 小时前
Control CLI Tutorial:用 aio 从终端控制 aiopsterm
运维·人工智能
VIP_CQCRE3 小时前
上线 AI 分站别一次改完:一套可回滚的配置与验收流程
运维·产品设计·ai工具·技术教程·acedatacloud