Docker Desktop里搭建Redis 8.2.1集群的保姆级教程
最近想自己开发一个小系统,而我的电脑里还没有安装任何的开发相关的配套软件和环境,所以想着方便以后开发的原则,就想从头到尾搭建一个redis cluster集群环境。一开始觉得这个搭建应该不难,网上有很多现成的资料而且有AI大模型的加持,所以理论上很快能搞定,可结果是我花了大概半天时间才算基本完成环境搭建,因此记录一下整个过程很有必要。
一、涉及软件及环境
|
序号
|
软件名称
|
版本号
|
|
1
|
Windows 11 家庭中文版
|
26100.4652
|
|
2
|
Docker Desktop
|
4.44.2 (202017)
|
|
3
|
Another Redis Desktop Manager
|
1.7.1
|
|
4
|
Git Bash
|
5.2.37
|
二、Docker Desktop下载&安装
三、Redis 8.2.1下载&安装

由于我已经下载了,所以这里没有出现下载进度界面,如果想跟我一样的话,请将latest替换成“8.2.1”
- 新建docker的挂载目录,我是在D:\Users\Docker
- 在Docker文件夹下新建挂载目录下按照如下说明创建目录,如下:

docker network create --subnet=172.20.0.0/16 redis-cluster-net
#!/bin/bash
for port in $(seq 7001 7006); do
mkdir -p ./${port}/conf
cat <<EOF > ./${port}/conf/redis.conf
port ${port}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
protected-mode no
bind 0.0.0.0
protected-mode no
EOF
done
cd /d/Users/Docker/Volumes/redis-cluster
bash ./redis-cnf-gen.sh



- 编写启动6个Redis节点脚本,如下
for port in $(seq 7001 7006); do
docker run -d --name redis-${port} \
-p ${port}:${port} -p 1${port}:1${port} \
-v $(pwd)/${port}/conf:/etc/redis \
-v $(pwd)/${port}/data:/data \
--network redis-cluster-net \
--ip 172.20.0.$((port-6999)) \
redis:latest redis-server /etc/redis/redis.conf
done
- 将上面的脚本保存为“docker-run-redis.sh”,放到“D:\Users\Docker\Volumes\redis-cluster”下
- 在Git Bash终端里运行上面脚本,如下:




Starting Redis Server1:C 21 Aug 2025 12:40:54.899 # Fatal error, can't open config file '/data/D:/Program Files/Git/etc/redis/redis.conf': No such file or directory
- 上面出现的错误是由于Windows系统和Linux系统混用导致环境变化,造成路径解析错误。在每个节点目录出现混乱的目录如下:

- 后来经过一番搜索实在没法解决这个问题,只能老老实实的一条命令一条命令的执行。方法如下:
- 删除D:\Users\Docker\Volumes\redis-cluster下7001~7006的目录
- 手动编写启动6个redis容器实例的脚本,如下:
docker run -d --name redis-7001 -p 7001:7001 -p 17001:17001 -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7001\\conf\\redis.conf:/etc/redis/conf/redis.conf -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7001\\data:/data --network redis-cluster-net --ip 172.20.0.101 redis:latest redis-server /etc/redis/conf/redis.conf docker run -d --name redis-7002 -p 7002:7002 -p 17002:17002 -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7002\\conf\\redis.conf:/etc/redis/conf/redis.conf -v D:\\Users\\Docker\\Volumes\\redis-cluster\7002\\data:/data --network redis-cluster-net --ip 172.20.0.102 redis:latest redis-server /etc/redis/conf/redis.conf docker run -d --name redis-7003 -p 7003:7003 -p 17003:17003 -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7003\\conf\\redis.conf:/etc/redis/conf/redis.conf -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7003\\data:/data --network redis-cluster-net --ip 172.20.0.103 redis:latest redis-server /etc/redis/conf/redis.conf docker run -d --name redis-7004 -p 7004:7004 -p 17004:17004 -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7004\\conf\\redis.conf:/etc/redis/conf/redis.conf -v D:\\Users\\Docker\\Volumes\\redis-cluster\7004\\data:/data --network redis-cluster-net --ip 172.20.0.104 redis:latest redis-server /etc/redis/conf/redis.conf docker run -d --name redis-7005 -p 7005:7005 -p 17005:17005 -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7005\\conf\\redis.conf:/etc/redis/conf/redis.conf -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7005\\data:/data --network redis-cluster-net --ip 172.20.0.105 redis:latest redis-server /etc/redis/conf/redis.conf docker run -d --name redis-7006 -p 7006:7006 -p 17006:17006 -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7006\\conf\\redis.conf:/etc/redis/conf/redis.conf -v D:\\Users\\Docker\\Volumes\\redis-cluster\\7006\\data:/data --network redis-cluster-net --ip 172.20.0.106 redis:latest redis-server /etc/redis/conf/redis.conf
温馨提示:如果不想夺走弯路,建议一条一条执行,全部复制执行会有问题。
- 然后去docker desktop里批量删除刚才的6个容器实例,如下:



- 打开docker desktop容器终端,拷贝上面的脚本,执行,如下:

- 我们可以看到6个redis实例都成功运行了

- 编写执行集群创建命令,如下:
docker exec -it redis-7001 redis-cli --cluster create 172.20.0.101:7001 172.20.0.102:7002 172.20.0.103:7003 172.20.0.104:7004 172.20.0.105:7005 172.20.0.106:7006 --cluster-replicas 1
- 在docker desktop终端运行上面的命令,如下:

Could not connect to Redis at 172.20.0.101:7001: Connection refused

- 按照上面介绍里先批量删除所有的运行的容器实例
- 再删除D:\Users\Docker\Volumes\redis-cluster下的7001-7006文件夹
- 在Git Bash运行脚本“redis-cnf-gen.sh”
- 然后在docker desktop终端里一条一条执行命令:

- 检查redis-7001里的配置文件是否挂载成功,很明显已经是文件而不是文件夹,成功了。

- 依次执行剩下的5条语句,成功运行,如下:

- 继续在docker desktop终端执行创建集群命令:




- 集群状态检查,在docker desktop终端运行如下命令:
docker exec -it redis-7001 redis-cli -p 7001 cluster nodes

- 数据读写测试
docker exec -it redis-7001 redis-cli -p 7001 -c
> set foo bar
> get foo

- 打开Another Redis Desktop Manager,配置redis连接,如下:

- 点击展开按钮,如下:

- 可以看到已经出现foo这个key值了,点击左侧foo这个值,右侧窗口出现值bar,如下:

四、总结
Docker Desktop里搭建Redis 8.2.1集群的保姆级教程的更多相关文章
- Docker中自动化搭建Hadoop2.6完全分布式集群
这一节将在<Dockerfile完成Hadoop2.6的伪分布式搭建>的基础上搭建一个完全分布式的Hadoop集群. 1. 搭建集群中需要用到的文件 [root@centos-docker ...
- 【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安装ik分词器
系列文章:[建议从第二章开始] [ELK][docker][elasticsearch]1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎应用 集群,安 ...
- C#两大知名Redis客户端连接哨兵集群的姿势
前言 前面利用<Docker-Compose搭建Redis高可用哨兵集群>, 我们的思路是将Redis.Sentinel.Redis Client App链接到同一个网桥网络,这个网桥内的 ...
- redis安装、测试&集群的搭建&踩过的坑
1 redis的安装 1.1 安装redis 版本说明 本教程使用redis3.0版本.3.0版本主要增加了redis集群功能. 安装的前提条件: 需要安装gcc:yum install gcc- ...
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- Redis 3.0.2集群搭建以及相关问题汇总
Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...
- 分布式缓存技术redis系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- 转:Redis 3.2.1集群搭建
Redis 3.2.1集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2) ...
- redis高级应用(集群搭建、集群分区原理、集群操作)
文章主目录 Redis集群简介 Redis集群搭建 Redis集群分区原理 集群操作 参考文档 本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 ...
随机推荐
- AtCoder Beginner Contest 357-D
Problem For a positive integer \(N\), let \(V_N\) be the integer formed by concatenating \(N\) exact ...
- 「Note」数论方向 - 数论基础
0. 前置知识 0.1. 费马小定理 \[a ^{p-1}\equiv1\pmod p(p\in\mathbb P,a\perp p) \] 由此可以推出模意义下乘法逆元: \[a ^{-1}\equ ...
- 【中文】【吴恩达课后编程作业】Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测
[中文][吴恩达课后编程作业]Course 5 - 序列模型 - 第三周作业 - 机器翻译与触发词检测 上一篇:[课程5 - 第三周测验]※※※※※ [回到目录]※※※※※下一篇:无 致谢: 感谢@e ...
- 从零开始学Flink:揭开实时计算的神秘面纱
一.为什么需要Flink? 当你在电商平台秒杀商品时,1毫秒的延迟可能导致交易失败:当自动驾驶汽车遇到障碍物时,10毫秒的计算延迟可能酿成事故.这些场景揭示了一个残酷事实:数据的价值随时间呈指数级衰减 ...
- What is Good Code
DRY:Don't repeat yourself 尽可能的不要有重复代码,同时意味着你要有足够多的抽象和思考,将相同的功能函数放在一个地方,不要重复. SRP:Single responsiblit ...
- ChunJun 1.16 Release版本即将发布,bug 捉虫活动邀您参与!
亲爱的社区小伙伴们,历时数月,我们很高兴地宣布,ChunJun 即将迎来 1.16 Release 版本的正式发布.在新版本中,ChunJun 新增了一批常用功能,进行了多项功能优化和问题修复,并在用 ...
- PHP指定编码
header("Content-type: text/html; charset=utf-8");
- Blazor学习之旅(6)路由系统
大家好,我是Edison. Blazor 的路由系统就和 ASP.NET MVC的路由系统一样,可以为我们提供灵活的选项,可用于确保用户请求到达可处理它们并返回用户想要的信息的组件. 本篇,我们来了解 ...
- 好用的浏览器自动化扩展-automa
好用的浏览器自动化扩展-automa 转载请注明出处: https://www.cnblogs.com/funnyzpc/p/18932812 automa是一款基于浏览器的任务流编排工具,就是处理一 ...
- 前端开发系列051-基础篇之自定义事件和插槽(Vue)
本文是早期学习Vue整理的一些阶段性总结,内容主要关于Vue框架中组件的事件传递和插槽. 一.组件通信(自定义事件) 组件间通信主要涉及到两方面的内容,即父组件(父级标签)向子组件传递数据以及子组件通 ...