Docker05-Redis启动
Docker05-Redis启动
【Docker运行Redis】+【使用本地config】+【挂载本地Data】
文章目录
- Docker05-Redis启动
- 1-Redis安装整理
- 2-参考网址
- 3-Redis运行后验证
- 4-Docker运行Redis
- 场景 1:只想快速跑一个 Redis 容器(无配置、无持久化)
- 场景 2:容器跑 Redis,但**使用本地自定义配置**(不挂载数据目录)
- 场景 3:既要**本地配置**又要**持久化数据到本地**(生产/开发推荐)
- 附录:最小可用 redis.conf 示例(仅 4 行)
- 使用小结
1-Redis安装整理
- 1-Docker创建conf和data文件夹->mac需要把上级目录共享出来
# linux
docker run --name my-redis -p 6379:6379 -d redis:latest
docker run --name my-redis -p 6379:6379 -v /path/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:latest
docker run --name my-redis -p 6379:6379 -v /path/conf/redis.conf:/usr/local/etc/redis/redis.conf -d -v /path/data:/data redis:latest# windows可以git下载配置后(不要执行shell脚本,直接手动执行)
docker run --name redis-config-6379 -p 6379:6379 -v D://TT_ENZO+//02-Docker文件//2025Docker-Gitee//docker_redis//conf//redis.conf:/usr/local/etc/redis/redis.conf -d redis:latest
- 2-Docker运行Redis->先无脑把redis运行起来->快速验证,快速失败!
- 3-Docker挂载本地config->解决【外网不能访问(IP限制)】+【安装时设定默认密码】问题
- 4-Docker挂在本地data->这个本地data文件夹,挂载到其他的docker镜像后还可以直接运行->【强(懒)的可怕】
- 5-DockerCompose如何配置哨兵模式->先了解什么是【主备】+【哨兵】+【集群】->不同的部署方案分别解决什么问题
- 6-Docker运行Redis后如何无工具验证->redis-cli命令
2-参考网址
- 【生产推荐】gitee系列docker服务部署-Redis高可用:https://gitee.com/enzoism/docker/tree/master/redis
- 【开发推荐】gitee-Redis简单部署:https://gitee.com/enzoism/docker_redis
- Docker 部署 Redis :https://blog.csdn.net/qq_56851614/article/details/146292954
3-Redis运行后验证
场景说明:使用docker把redis拉起来之后,但是能不能连接上,需要验证一下,【我又没有写代码】+【没有redis连接工具】怎么办?->使用redis自带的redis-cli进行验证
- 执行脚本
# 1. 进入容器
docker exec -it <容器名或ID> sh# 2. 连本机默认端口
redis-cli# 3. 顺手跑两条命令验证
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> exit
- 编写脚本check-redis.sh
#!/usr/bin/env bash
CONTAINER=$1
[ -z "$CONTAINER" ] && { echo "用法: $0 <容器名或ID>"; exit 1; }
docker exec "$CONTAINER" redis-cli ping && echo "✅ Redis 可正常连接" || echo "❌ 连接失败"
4-Docker运行Redis
- 你已在宿主机创建好目录
/data/redis/{conf,data}
并把redis.conf
放在了/data/redis/conf/redis.conf
- 希望 Redis 默认端口 6379 对外暴露为 同端口
- 使用 官方镜像
redis:latest
(可换成redis:7
或其他版本)
场景 1:只想快速跑一个 Redis 容器(无配置、无持久化)
#!/usr/bin/env bash
# file: 01_run_redis_default.shdocker run -d --name redis-default \-p 6379:6379 \redis:latest
特点
- 容器内部用 Redis 自带默认配置
- 数据全在容器层,容器删了数据就没
- 最适合本地临时调试、单元测试
场景 2:容器跑 Redis,但使用本地自定义配置(不挂载数据目录)
#!/usr/bin/env bash
# file: 02_run_redis_with_local_conf.shCONF_FILE=/data/redis/conf/redis.conf# 如果配置里没写 daemonize,Redis 会前台运行,docker 需要这个
grep -q '^daemonize yes' "$CONF_FILE" && {echo "请把 redis.conf 中的 daemonize 设为 no,否则容器会退出"exit 1
}docker run -d --name redis-with-conf \-p 6379:6379 \-v "$CONF_FILE":/usr/local/etc/redis/redis.conf:ro \redis:latest \redis-server /usr/local/etc/redis/redis.conf
特点
- 完全用你的
/data/redis/conf/redis.conf
启动 - 数据仍写在容器层,重启容器数据丢失
- 适合“想验证配置变更”又不想留垃圾数据的场景
场景 3:既要本地配置又要持久化数据到本地(生产/开发推荐)
#!/usr/bin/env bash
# file: 03_run_redis_full_mount.shCONF_FILE=/data/redis/conf/redis.conf
DATA_DIR=/data/redis/data# 1. 确保数据目录存在且 Redis UID(999) 可写
mkdir -p "$DATA_DIR"
chmod 755 "$DATA_DIR"
# 如果宿主机开了 SELinux,需加权限:chcon -Rt svirt_sandbox_file_t "$DATA_DIR"# 2. 同样检查 daemonize
grep -q '^daemonize yes' "$CONF_FILE" && {echo "请把 redis.conf 中的 daemonize 设为 no"exit 1
}docker run -d --name redis-full \-p 6379:6379 \-v "$CONF_FILE":/usr/local/etc/redis/redis.conf:ro \-v "$DATA_DIR":/data \redis:latest \redis-server /usr/local/etc/redis/redis.conf \--dir /data # 让配置中的 dir 指向挂载点
特点
- 配置、数据双向绑定宿主机,容器删除后数据仍在
- 升级镜像只需
docker stop / rm / pull / run
一行即可,零数据丢失 - 生产环境可再加
--restart=always
、日志驱动等参数
附录:最小可用 redis.conf 示例(仅 4 行)
bind 0.0.0.0
port 6379
daemonize no
dir /data
把上面内容保存成 /data/redis/conf/redis.conf
就能直接给脚本 2、3 使用。
使用小结
- 临时测试 → 脚本 1
- 调配置、不 care 数据 → 脚本 2
- 长期运行、数据可恢复 → 脚本 3
直接 chmod +x *.sh && ./xx.sh
即可启动。祝使用愉快!