创建network
docker network create redis-master-slave
redis-master-slave 为network-name,可以替换为其他名字,上下对应修改即可
利用镜像创建容器-master
docker run --name redis-master -v /Users/lixinxin/workspace/data/redis/master-slave/redis-master:/data -v /Users/lixinxin/workspace/data/redis/master-slave/redis-master/redis-master.conf:/etc/redis/redis.conf --net redis-master-slave -p 6379:6379 -d redis redis-server /etc/redis/redis.conf
查看master-ip ,修改slave.conf
docker network inspect redis-master-slave
redis-slave.conf
bind 0.0.0.0
protected-mode yes
dir ./
requirepass 19971212
appendonly yes
port 6380
################################# 主从复制 #################################
# 主从复制。使用 slaveof 来让一个 redis 实例成为另一个reids 实例的副本。
# 注意这个只需要在 slave 上配置。
#
slaveof 172.20.0.2 6379
# 如果 master 需要密码认证,就在这里设置
masterauth 19971212
# 当一个 slave 与 master 失去联系,或者复制正在进行的时候,
# slave 可能会有两种表现:
#
# 1) 如果为 yes ,slave 仍然会应答客户端请求,但返回的数据可能是过时,
# 或者数据可能是空的在第一次同步的时候
#
# 2) 如果为 no ,在你执行除了 info he salveof 之外的其他命令时,
# slave 都将返回一个 "SYNC with master in progress" 的错误,
#
slave-serve-stale-data yes
# 从 redis 2.6 版起,默认 slaves 都是只读的。
slave-read-only yes
repl-disable-tcp-nodelay no
slaveof ip改为master节点对应ip,slave1与slave2 conf区别是port 6380 port 6381
利用镜像创建容器slave
docker run --name redis-slave-1 -v /Users/lixinxin/workspace/data/redis/master-slave/redis-slave-1:/data -v /Users/lixinxin/workspace/data/redis/master-slave/redis-slave-1/redis_slave_1.conf:/etc/redis/redis.conf --net redis-master-slave -p 6380:6380 -d redis redis-server /etc/redis/redis.conf
docker run --name redis-slave-2 -v /Users/lixinxin/workspace/data/redis/master-slave/redis-slave-2:/data -v /Users/lixinxin/workspace/data/redis/master-slave/redis-slave-2/redis_slave_2.conf:/etc/redis/redis.conf --net redis-master-slave -p 6381:6381 -d redis redis-server /etc/redis/redis.conf