废话少说!直接来上docker-compose.yaml文件(切记格式)
version: '2'
networks:
myweb:
external:
name: mysql-docker-compose_myweb
services:
redis-master:
container_name: 'redis-master'
image: 'redis:5.0.3'
restart: always
networks:
- myweb
volumes:
- ./master/data:/data
ports:
- 6371:6371
command: redis-server --port 6371 --requirepass 123456--appendonly yes
redis-slave1:
container_name: 'redis-slave1'
image: 'redis:5.0.3'
restart: always
networks:
- myweb
volumes:
- ./slave1/data:/data
ports:
- 6372:6379
command: redis-server --slaveof redis-master 6371 --requirepass 123456 --masterauth 123456
redis-slave2:
container_name: 'redis-slave2'
image: 'redis:5.0.3'
restart: always
networks:
- myweb
volumes:
- ./slave2/data:/data
ports:
- 6373:6379
command: redis-server --slaveof redis-master 6371 --requirepass 123456--masterauth 123456
注意,以上的external参数指的是将这些服务加入到已有的网络中,name后的即为自定义的网络,如果你没有先行创建网络,可以将后面的网络名改为host即可
创建容器
docker-compose up -d
进入master容器
docker exec -it 容器id /bin/bash
redis-cli -p 6371 # 这里的-p参数指定redis打开的端口(默认为6379),由于前面我们master在6371端口,所以这里需指定
# 鉴权
auth 你的密码
查看主从状态
info replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.20.0.5,port=6379,state=online,offset=9447,lag=1
slave1:ip=172.20.0.6,port=6379,state=online,offset=9447,lag=1
master_replid:adb9c95aea018f543085f80d194efdb093c20d90
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:9447
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:9447
这里可以看到 connected_slaves为2,说明两个从节点已经连接完毕
redis主从到这里就结束了