docker安装redis主从

docker安装redis主从

#我们先创建一个redis-master
[root@VM-12-16-centos ~]# docker run -itd --name redis-master docker.io/redis bash
#查看redis-master的IP,因为我们需要--link进行关联
[root@VM-12-16-centos ~]# docker inspect  redis-master | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.4",
                    "IPAddress": "172.17.0.4",
#现在创建一个从,我们通过--link进行容器关联
[root@VM-12-16-centos ~]# docker run -itd --name redis-slave --link redis-master:172.17.0.4 docker.io/redis bash
#查看下我们的容器是否启动
[root@VM-12-16-centos ~]# docker ps 
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                               NAMES
4add66bb140a        docker.io/redis          "docker-entrypoint..."   About an hour ago   Up About an hour    6379/tcp                            redis-slave
73f95f2d53ff        docker.io/redis          "docker-entrypoint..."   About an hour ago   Up About an hour    6379/tcp                            redis-master
#查看宿主据下的docker启动的redis-master的data
[root@VM-12-16-centos ~]# docker inspect redis-master | grep Source
                "Source": "/var/lib/docker/volumes/4c1ddfe80b305f59a70cb639700e452174ee0b384f596a5a3bfa70ac8fabbb65/_data",

[root@VM-12-16-centos ~]# cd /var/lib/docker/volumes/4c1ddfe80b305f59a70cb639700e452174ee0b384f596a5a3bfa70ac8fabbb65/_data
#redis主从都启动了,但是docker启动的redis里面没有redis.conf,所以我们在宿主机上的redis目录下拷贝一份redis.conf
[root@VM-12-16-centos _data]# cp /usr/local/redis/redis.conf .
#我们编辑redis.conf,相应的根据自己的需求配置,编辑完成保存退出
[root@VM-12-16-centos _data]# vim redis.conf

69  #bind 127.0.0.1  #需要注释掉
88  protected-mode no  #关闭保护模式
136 daemonize yes
158 pidfile /var/run/redis.pid
507 requirepass foobared  #这里密码可以注释掉,看自己需要,如果配置了密码,丛里的redis.conf必须配置masterauth
#下面我们需要配置从,配置好保存退出
[root@VM-12-16-centos ~]# docker inspect redis-slave | grep Source
                "Source": "/var/lib/docker/volumes/6dc22a05b69fe84dcca03c5ea8c60721bbdcc417b2892d24cd0f928c4cdc3e69/_data",

[root@VM-12-16-centos ~]# cd /var/lib/docker/volumes/6dc22a05b69fe84dcca03c5ea8c60721bbdcc417b2892d24cd0f928c4cdc3e69/_data

[root@VM-12-16-centos _data]# cp /usr/local/redis/redis.conf .

[root@VM-12-16-centos _data]# vim redis.conf

 69  #bind 127.0.0.1
 88  protected-mode no
 136 daemonize yes
 158 pidfile /var/run/redis.pid
 286 replicaof 172.17.0.4 6379  # replicaof <masterip> <masterport>
 293 masterauth foobared # masterauth <master-password>
#下面我们登陆到redis-master的容器中
[root@VM-12-16-centos _data]# docker exec -it redis-master bash
#将redis的配置文件拷贝到/usr/local/bin下面,这里的拷贝也可以通过docker cp 完成
root@73f95f2d53ff:/data# cd /usr/local/bin/
root@73f95f2d53ff:/usr/local/bin# cp /data/redis.conf .
#启动redis
root@73f95f2d53ff:/usr/local/bin# redis-server redis.conf
#登陆客户端
root@73f95f2d53ff:/usr/local/bin# redis-cli 
#下面我们再打开一个终端,在从上执行相同的操作
[root@VM-12-16-centos _data]# docker exec -it redis-slave bash
root@4add66bb140a:/data# cd /usr/local/bin
root@4add66bb140a:/usr/local/bin# cp /data/redis.conf .
root@4add66bb140a:/usr/local/bin# redis-server redis.conf
root@4add66bb140a:/usr/local/bin# redis-cli
#master上执行操作
127.0.0.1:6379> ping
(error) NOAUTH Authentication required. #报错是因为我们redis设置了密码,没有设置密码,你敲ping它会返回一个pong
127.0.0.1:6379> auth foobared
OK
127.0.0.1:6379> ping 
PONG
127.0.0.1:6379> info replication 
# Replication
role:master
connected_slaves:1
slave0:ip=172.17.0.5,port=6379,state=online,offset=9550,lag=1
master_failover_state:no-failover
master_replid:1d43d187a55290422bb70c001b94b5ed7a3dfc16
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:9550
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:9550
127.0.0.1:6379> 
127.0.0.1:6379> set guofei 6a6a
OK
127.0.0.1:6379> get guofei 
"6a6a"

#slave上执行操作,master上设定了一个值从上也可以查看到
127.0.0.1:6379> auth foobared
OK
127.0.0.1:6379> info replication 
# Replication
role:slave
master_host:172.17.0.4
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:9879
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:1d43d187a55290422bb70c001b94b5ed7a3dfc16
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:9879
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:9879
127.0.0.1:6379> get guofei
"6a6a"
127.0.0.1:6379> 
这样我们的redis主从就完成了,当我在master上del guofei,从slave上也就会消失。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值