docker实现redis主从

实现redis主从之前,介绍docker网络模式
docker安装后,默认会创建下面三种网络类型

[root@localhost ~]# docker network ls
NETWORK   ID   NAME   DRIVER 
cac509fc172a   bridge   bridge 
13d155562a61   host   host
06f63397617c   none   null

可以通过 --network bridge 指定网络类型

  1. bridge:桥接网络
    默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变。
  2. none:
    无指定网络 使用 --network=none ,docker 容器就不会分配局域网的IP。
  3. host:
    主机网络 使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。 例如,在容器中运行一个Web服务,监听8080端口,则主 机的8080端口就会自动映射到容器中。

因为默认的网络不能制定固定的地址,所以我们将创建自定义网络,并指定网段:192.168.1.0/24 并命名为mynetwork,指令 如下:
~ docker network create --subnet=192.160.1.0/24 mynetwork
~ docker run -itd --network=redis-network --ip 192.168.1.10 --name dockerName imagesName ~ docker network ls
~ docker network rm mynetwork
!注意:这个网络段不要和宿主机的网络端冲突,不然会容易对宿主机产生影响

安装使用docker,且创建镜像等操作看以往文章,连接如下
https://www.jianshu.com/p/a75b4b6b8460

首先看下自己docker中的镜像文件

docker images
276B465C965068861231AB25D1DAC4AE.jpg

根据centos/redis image 创建两个容器 master slave 分别充当主从服务

docker run -itd -p 6350:6379 --network=mynetwork --ip=192.160.1.150 --name redismaster centos/redis

docker run -itd -p 6340:6379 --network=mynetwork --ip=192.160.1.140 --name redisslave centos/redis

分别进入主从的容器开启redis-server /usr/src/redis/redis-5.0.7/redis.conf
确保主服务器的redismaster的配置是ok的
别忘了修改下conf 中

protected-mode no   // yes=>no
bind 0.0.0.0 // 更改ip

开启后 先进入从服务器,在cli里设置一个值,且查看


8207D974D58549E245E57C6276A9AC26.jpg

开启主服务,且设置cli值


921EDEF0-10F3-4489-9D40-94E0E30FE092.png

重点来了 在从的cli中 输入SLAVEOF IP PORT 实现同步

2A3FB12802CADC6422BB17825F63CAE1.jpg

可以看到 slave 中的数据发生改变,变成master中的数据,此时再在master中添加数据
发现slave中的数据一模一样


0C8766546933E71977712BA9C693524A.jpg

ok 完美

你可能感兴趣的:(docker实现redis主从)