1.安装配置docker并设置镜像加速并且启动docker
[root@localhost ~] yum install docker
[root@localhost docker] pwd
/etc/docker
[root@localhost docker] cat daemon.json
{
"registry-mirrors": ["https://mzxx8xy8.mirror.aliyuncs.com"]
}
[root@localhost docker] systemctl start docker
2.搜索redis镜像并拉取
[root@localhost ~] docker search redis
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/redis Redis is an open source key-value store th... 8248 [OK]
docker.io docker.io/bitnami/redis Bitnami Redis Dock
[root@localhost ~] docker pull redis
Using default tag: latest
Trying to pull repository docker.io/library/redis ...
latest: Pulling from docker.io/library/redis
afb6ec6fdc1c: Pull complete
608641ee4c3f: Pull complete
668ab9e1f4bc: Pull complete
78a12698914e: Pull complete
d056855f4300: Pull complete
618fdf7d0dec: Pull complete
Digest: sha256:ec277acf143340fa338f0b1a9b2f23632335d2096940d8e754474e21476eae32
Status: Downloaded newer image for docker.io/redis:latest
[root@localhost ~] docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/redis latest 36304d3b4540 10 days ago 104 MB
3.运行redis-server容器并做持久化配置
[root@localhost ~] mkdir /data
主
[root@localhost ~] docker run --name redis1 -d -p 6379:6379 -v /opt/redis1:/data redis
从
[root@localhost ~] docker run --name redis2 -d -p 6380:6380 -v /opt/redis2:/data redis
[root@localhost ~] docker run --name redis3 -d -p 6381:6381 -v /opt/redis3:/data redis
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
33cf8fba7544 docker.io/redis "docker-entrypoint..." 4 seconds ago Up 3 seconds 6379/tcp, 0.0.0.0:6381->6381/tcp redis3
85dcac4b1ea6 docker.io/redis "docker-entrypoint..." 15 seconds ago Up 14 seconds 6379/tcp, 0.0.0.0:6380->6380/tcp redis2
c55f9df4ac6d docker.io/redis "docker-entrypoint..." 27 seconds ago Up 26 seconds 0.0.0.0:6379->6379/tcp redis
4.查看容器IP
[root@localhost ~] docker inspect redis1 redis2 redis3 | grep IPAd "SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAddress": "172.17.0.2",
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.4",
注:这里记住主的IP:172.17.0.2
5,配置redis集群,一主两从
我们将redis-maste也就是redis1 配置为主,redis2和redis3配置为从
登录从redis2
从1
[root@localhost ~] docker exec -it redis2 redis-cli
127.0.0.1:6379> SLAVEOF 172.17.0.2 6379
OK
127.0.0.1:6379> ROLE
1) "slave"
2) "172.17.0.2"
3) (integer) 6379
4) "connected"
5) (integer) 0
从2
[root@localhost ~]# docker exec -it redis3 redis-cli
127.0.0.1:6379> SLAVEOF 172.17.0.2 6379
OK
127.0.0.1:6379> ROLE
1) "slave"
2) "172.17.0.2"
3) (integer) 6379
4) "connected"
5) (integer) 140
登录主redis-master redis 1查看主从情况
[root@localhost ~] docker exec -it redis1 redis-cli
127.0.0.1:6379> INFO replication
# Replication
role:master
connected_slaves:2
slave0:ip=172.17.0.3,port=6379,state=online,offset=266,lag=0
slave1:ip=172.17.0.4,port=6379,state=online,offset=266,lag=0
6.验证主从是否集群成功
[root@localhost ~]# docker exec -it redis1 redis-cli
127.0.0.1:6379> set name nginx
OK
127.0.0.1:6379> exit
[root@localhost ~]# docker exec -it redis2 redis-cli
127.0.0.1:6379> get name
"nginx"
127.0.0.1:6379> exit
[root@localhost ~]# docker exec -it redis3 redis-cli
127.0.0.1:6379> get name
"nginx"
127.0.0.1:6379>