安装配置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"