用 docker 快速搭建 redis 主从集群的核心是 docker-compose 统一管理,通过三份独立 redis.conf 配置主从关系(master.conf 不设 slaveof,slave1/2.conf 各含 slaveof redis-master 6379),启用 aof 与统一密码,自定义 bridge 网络实现服务名通信,启动后用 info replication 和 get 验证同步;哨兵可选但推荐用于自动故障转移。

用 Docker 快速搭建 Redis 主从复制集群,核心是用 docker-compose 统一管理多个容器,通过 redis.conf 配置主从关系,无需手动进容器执行 SLAVEOF 命令。关键在于配置文件分离、端口映射清晰、网络互通。
准备三份独立的 redis.conf 文件
主节点和每个从节点需各自配置,不能共用同一份文件:
-
master.conf:仅开启绑定(
bind 0.0.0.0)、保护模式关闭(protected-mode no),不写slaveof -
slave1.conf:同样关闭保护模式,加上
slaveof redis-master 6379(注意主机名用服务名) -
slave2.conf:同上,也指向
redis-master,端口保持默认 6379
所有 conf 中建议显式设置 appendonly yes(开启 AOF)和 requirepass yourpassword(如需密码),主从密码需一致才能同步成功。
编写 docker-compose.yml 定义服务与网络
使用自定义 bridge 网络确保容器间可通过服务名通信:
version: '3.8'
services:
redis-master:
image: redis:7.2
container_name: redis-master
ports:
- "6379:6379"
volumes:
- ./master.conf:/usr/local/etc/redis/redis.conf
- ./data/master:/data
command: /usr/local/etc/redis/redis.conf
networks:
- redis-net
<p>redis-slave1:
image: redis:7.2
container_name: redis-slave1
ports:</p>
- "6380:6379" volumes:
- ./slave1.conf:/usr/local/etc/redis/redis.conf
- ./data/slave1:/data command: /usr/local/etc/redis/redis.conf networks:
- redis-net
redis-slave2: image: redis:7.2 container_name: redis-slave2 ports:
- "6381:6379" volumes:
- ./slave2.conf:/usr/local/etc/redis/redis.conf
- ./data/slave2:/data command: /usr/local/etc/redis/redis.conf networks:
- redis-net
networks: redis-net: driver: bridge
注意:command 指定配置路径,不是启动命令;container_name 与 slaveof 中的主机名必须匹配(如 redis-master)。
一键启动并验证主从状态
在 docker-compose.yml 所在目录执行:
docker-compose up -d
等待几秒后检查状态:
- 连主库:
redis-cli -p 6379→ 输入INFO replication,看role:master和connected_slaves:2 - 连从库1:
redis-cli -p 6380→ 同样执行INFO replication,应显示role:slave和master_link_status:up - 写入主库数据(如
SET foo bar),再在任一从库执行GET foo,返回"bar"即同步成功
可选:添加哨兵实现自动故障转移
若需高可用,可在同一 compose 文件中加入 redis-sentinel 服务,挂载 sentinel.conf 并指定监控主节点:
- 配置项示例:
sentinel monitor mymaster redis-master 6379 2 - 启动后用
redis-cli -p 26379 -a yourpass SENTINEL get-master-addr-by-name mymaster查当前主节点 - 手动停掉主容器测试,哨兵会在几秒内选出新主,原主恢复后自动转为从
哨兵不是必须项,但主从本身不具备自动切换能力,生产环境建议补上。











