一、安装redis
搜索redis镜像
> docker search redis
拉取镜像
> docker pull redis
查看docker镜像
> docker images
结果:
创建并运行容器
> docker run -itd --name=redis_test01 -p 6379:6379 redis
命令说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name :为创建的容器命名。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射(6379:6379 : 将容器的6379端口映射到主机的6379端口)。
登录容器
> docker exec -it 容器名称 (或者容器ID) /bin/bash
> redis-cli
查看容器
> info
结果
二、主从复制
1.redis节点准备
首先在docker上创建并运行多个redis节点,端口分别为:6379、6380、6381
> docker run -itd --name=redis01 -p 6379:6379 redis
> docker run -itd --name=redis02 -p 6380:6379 redis
> docker run -itd --name=redis03 -p 6381:6379 redis
2.节点IP地址查询
查询redis节点:redis01、redis02、redis03 的在在容器中的IP地址
> docker inspect containerid(容器ID)
演示(以redis01节点):
(1)查看redis01节点的容器id
> docker ps
容器id:
(2)查看redis01节点IP地址
> docker inspect containerid b5e07169d6de
3个redis节点的内网ip地址为:
redis01-6379 172.17.0.2
redis02-6380 172.17.0.3
redis03-6381 172.17.0.4
3.查看redis 主从复制信息
创建的时候,redis节点默认角色是 master
> info replication
结果:表示当前是 master主节点
4.将redis02、redis03设置为【从节点】
(1)进入docker容器内部,分别登录到redis02、redis03
(2)执行下面的命令将redis02、redis03设置为redis01的【从节点】
> SLAVEOF (redis01 IP) (redis01宿主机端口)
> SLAVEOF 172.17.0.2 6379
操作:redis02
操作redis03
5.查看redis01的主从复制信息
可以看到,redis01节点,已经有了2个从节点
6.测试
说明:redis01节点新增的数据,会同步到redis02、redis03
主节点:
> get slaveof
> set slaveof slaveof
效果:
从1(redis02)
> get slaveof
从2(redis03)
> get slaveof
为了能更直观redis主从复制,我们分别在redis02、redis03 打开监控模式
(1) 分别登录redis02、redis03,执行下面的命令
> monitor
(2)主节点执行新增数据,观察redis02、redis03
完!