安装配置docker并设置镜像加速

[root@localhost ~]# yum -y install docker
[root@localhost ~]# cat /etc/docker/daemon.json 
{
"registry-mirrors": ["https://yol1de5p.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.100.128"]
}

关闭selinux并且启动docker

[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start docker

拉取redis镜像

[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

运行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:6379 -v /opt/redis2:/data redis
[root@localhost ~]# docker run --name redis3 -d -p 6381:6379 -v /opt/redis2:/data redis

docker启动3个redis容器服务,使用6379-6381这3个端口

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
ec2a153ff150        redis               "docker-entrypoint..."   3 seconds ago       Up 2 seconds        0.0.0.0:6381->6379/tcp   redis3
f0d4b71d49ce        redis               "docker-entrypoint..."   8 seconds ago       Up 8 seconds        0.0.0.0:6380->6379/tcp   redis2
57735917de84        redis               "docker-entrypoint..."   15 seconds ago      Up 15 seconds       0.0.0.0:6379->6379/tcp   redis1

查看docker容器的ip

[root@localhost ~]# docker inspect redis1 | grep IPAd
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
[root@localhost ~]# docker inspect redis2 | grep IPAd
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
[root@localhost ~]# docker inspect redis3 | grep IPAd
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.4",
                    "IPAddress": "172.17.0.4",

将redis1配置为主,redis2和redis3配置为从

以redis1位主redis2和redis3位从,
[root@localhost ~]# docker exec -it redis1 redis-cli
127.0.0.1:6379> role
1) "master"
2) (integer) 42
3) 1) 1) "172.17.0.3"
      2) "6379"
      3) "42"
   2) 1) "172.17.0.4"
      2) "6379"
      3) "42"
      
redis1和redis2进行与主同步(从)
[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) 70
[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) 70

测试是否成功

redis1(主)创建一键值对
127.0.0.1:6379> set 111 111
OK
127.0.0.1:6379> get 111
"111"
redis2上查看是否同步成功(从)
127.0.0.1:6379> get 111
"111"
redis3上查看是否同步成功(从)
127.0.0.1:6379> get 111
"111"