Docker安装Redis(单机版和集群搭建版)

快速启动

1.拉取redis镜像到本地厂库(这里以7.0.2版本演示)

docker pull redis:7.0.2


2.查看是否下载成功

docker images redis


3.下载成功之后就可以启动运行

docker run -d -p 6379:6379 --name my-redis redis:7.0.2

//-d代表启动redis容器后台运行
//-p是端口映射 linux服务器的端口:容器内部到端口
//--name my-redis 给这个容器起别名为my-redis,名称随便起


4.启动成功后执行以下命令进入到容器内,其中my-redis 代表的是我们前面启动redis容器起的别名

docker exec -it my-redis /bin/bash


进入到容器之后输入以下命令就可以进入到redis中进行操作

redis-cli


或者启动完成之后我们可以用redis客户端进行连接操作。 连接用户名和密码都为空。


指定配置文件启动redis

首先得在本地虚拟机创建一个配置文件/redis/redis.conf,这个配置文件的内容如下:

#bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。

dir  ./ #输入本地redis数据库存放文件夹(可选)

appendonly yes #yes就是打开了redis的AOF持久化(可选) ​ 默认是RDB模式(可选)

logfile "log.log"

requirepass 123456(设置成你自己的密码)


docker run -p 6379:6379 --name my-redis -v/redis/conf/redis.conf:/etc/redis/redis.conf -v /redis/data:/data --privileged=true -d redis redis-server /etc/redis/redis.conf

redis集群搭建


1.首先得至少创建3个redis节点,集群环境默认要求不能小于3个节点
redis1、redis2、redis3
2.为每一个节点创建一个文件夹,用来和对应的容器进行挂载。

/redis1/conf 、/redis1/data #conf用来存放配置文件 、data用来存放数据
/redis2/conf 、/redis2/data #conf用来存放配置文件 、data用来存放数据
/redis3/conf 、/redis3/data #conf用来存放配置文件 、data用来存放数据


3.在/redis1/conf文件夹创建一个配置文件命名为redis.conf内容为:

#bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。


appendonly yes #yes就是打开了redis的AOF持久化(可选) ​ 默认是RDB模式(可选)

requirepass root(设置成你自己的密码)
cluster-enabled yes #开启集群模式

4.将这个配置文件复制到其他两个文件夹
 

cp /redis1/conf/redis.conf /redis2/conf/
cp /redis1/conf/redis.conf /redis3/conf/

5.准备好环境后开始创建容器节点,命令如下
docker run -d -p 6379:6379 --name redis1 -v /redis1/conf:/redis/conf -v /redis1/data/:/redis/data/ redis:7.0.2 redis-server /redis/conf/redis.conf
#redis-server /redis/conf/redis.conf ,这个后面/redis/conf/redis.conf是指的容器内部的配置文件路径,也就是我们挂载进去的配置文件
docker run -d -p 6380:6379 --name redis2 -v /redis2/conf:/redis/conf -v /redis2/data/:/redis/data/ redis:7.0.2 redis-server /redis/conf/redis.conf
#redis-server /redis/conf/redis.conf ,这个后面/redis/conf/redis.conf是指的容器内部的配置文件路径,也就是我们挂载进去的配置文件
docker run -d -p 6381:6379 --name redis3 -v /redis3/conf:/redis/conf -v /redis3/data/:/redis/data/ redis:7.0.2 redis-server /redis/conf/redis.conf
#redis-server /redis/conf/redis.conf ,这个后面/redis/conf/redis.conf是指的容器内部的配置文件路径,也就是我们挂载进去的配置文件

说明:
# -p是端口映射; -p linux端口:容器端口
# -v 是文件挂载; -v linux目录:容器目录 ,两者之间是相互绑定linux目录内的文件改编了,容器内的也会自动改变反之亦然。
# --name 给容器起别名; --name redis1 ,起的别名为redis1 

6. 3个节点都启动成功之后分别执行下面的命令查看对应容器host,执行命令返回最后几行中ipaddress字段对应的就是host
 

docker inspect redis1
docker inspect redis2
docker inspect redis3

6.3个节点都启动成功之后进入到任意一台容器命令如下
 

docker exec -it redis1 /bin/bash
root@2ea939e45e75:/data# redis-cli
--cluster create 3.200.0.6:6379 3.200.0.8:6379 3.200.0.9:6379 --cluster-replicas 0 -a root
#-a root 代表的是redis1配置文件中设置的密码
#cluster-replicas 0代表3台都是主机没有从机,因为只有3台,如果启动6台就可以设置为一主一从--cluster-replicas 1
#3.200.0.6、3.200.0.8、3.200.0.9代表的是3台容器的host

7.搭建好集群之后以集群模式进入到任意一台容器中的redis

 redis-cli -c -p (端口号) -a (你的密码)
 redis-cli -c -a root #不写端口默认6379


#-c就是集群模式  -a root是密码,不写的话会重定向到集群的其他redis会报错
#redis集群set切换主机需要输入密码(error) NOAUTH Authentication required.
info replication #进入到redis 执行命令查看redis信息


集群搭建+主从复制(3主3从)

 1.我们需要6个redis节点分别为redis1、redis2、redis3、redis4、redis5、redis6(后面会在5,6两步创建这些节点)2.为每一个节点创建一个文件夹,用来和对应的容器进行挂载。
创建 /redis1/conf 、/redis1/data #conf用来存放配置文件 、data用来存放数据
3.在/redis1/conf文件夹创建一个配置文件命名为redis.conf内容为:

#bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。


appendonly yes #yes就是打开了redis的AOF持久化(可选) ​ 默认是RDB模式(可选)

requirepass root #(设置成你自己的密码)
cluster-enabled yes #开启集群模式
masterauth root #从机连接主机需要主机的密码


4.其他五个文件夹和redis1类似,需要自己创建(说明:创建的过程只需要修改redis1改为redis2、redis3等即可,目录结构和配置文件都不需要改)

5.准备好环境后开始创建容器节点,命令如下


docker run -d -p 6379:6379 --name redis1 -v /redis1/conf:/redis/conf -v /redis1/data/:/redis/data/ redis:7.0.2 redis-server /redis/conf/redis.conf
#redis-server /redis/conf/redis.conf ,这个后面/redis/conf/redis.conf是指的容器内部的配置文件路径,也就是我们挂载进去的配置文件
#通过docker ps -l来查看状态 是up代表启动成功 exeit代表失败需要用docker logs redis1查看失败的原因

docker run -d -p 6380:6379 --name redis2 -v /redis2/conf:/redis/conf -v /redis2/data/:/redis/data/ redis:7.0.2 redis-server /redis/conf/redis.conf
#redis-server /redis/conf/redis.conf ,这个后面/redis/conf/redis.conf是指的容器内部的配置文件路径,也就是我们挂载进去的配置文件
#通过docker ps -l来查看状态 是up代表启动成功 exeit代表失败需要用docker logs redis2查看失败的原因
 

6.其他4个模仿redis1、redis2自行创建容器节点


7.6个节点都启动成功之后进入到任意一台容器命令如下(我们进入redis1容器)
 

docker exec -it redis1 /bin/bash

输入命令如下:

root@2ea939e45e75:/data# redis-cli
--cluster create 3.200.0.6:6379 3.200.0.8:6379 3.200.0.9:6379 3.200.0.10:6379 3.200.0.11:6379 3.200.0.12:6379 --cluster-replicas 1 -a root


#-a root 代表的是redis1配置文件中设置的密码
#cluster-replicas 1 代表每台主机需要一台从机
#3.200.0.6、3.200.0.8、3.200.0.9、3.200.0.10、3.200.0.11、3.200.0.12代表的是6台容器的host
#用docker inspect redis1、docker inspect redis2....查看对应容器的ip地址,字段为ipaddress就是ip地址)

8.至此3主3从都搭建好了,我们进入到任意一台容器中的redis

docker exec -it redis1 /bin/bash #进入到redis1容器中
redis-cli -c -p (端口号) -a (你的密码)
redis-cli -c -a root #不写端口默认6379


#-c就是集群模式  -a root是密码,不写的话会重定向到集群的其他redis会报错
#redis集群set切换主机需要输入密码(error) NOAUTH Authentication required.
info replication #进入到redis 执行命令查看redis信息

哨兵监视3台主机

1.创建文件夹的方式和创建redis类似

创建 /redis-sentinel/conf 、/redis-sentinel/data #conf用来存放配置文件 、data用来存放数据
在/redis-sentinel/conf文件夹创建一个配置文件命名为redis.conf

配置文件如下:

#port 26379
#不限制ip
#bind 0.0.0.0
#
#让sentinel服务后台运⾏
#daemonize yes
#
# 配置监听的主服务器,mymaster代表服务器的名称,⾃定义,172.18.172.109 代表监控的主服务器,6379代表端⼝,
#1代表只有个或1个以上的哨兵认为主服务器不可⽤的时候,才会进⾏failover操作。
sentinel monitor redis1 3.200.0.6 6379 1
sentinel monitor redis3 3.200.0.9 6379 1
sentinel monitor redis2 3.200.0.8 6379 1

#sentinel auth-pass定义服务的密码,redis1是服务名称,root是Redis服务器密码
sentinel auth-pass redis1 root
sentinel auth-pass redis3 root
sentinel auth-pass redis2 root
#
#超过5秒master还没有连接上,则认为master已经停⽌
sentinel down-after-milliseconds redis1 5000
sentinel down-after-milliseconds redis3 5000
sentinel down-after-milliseconds redis2 5000

#
#如果该时间内没完成failover操作,则认为本次failover失败
sentinel failover-timeout redis1 30000
sentinel failover-timeout redis3 30000
sentinel failover-timeout redis2 30000

# Generated by CONFIG REWRIT
port 26379
dir "/data"

 3.启动哨兵监听3个主机

docker run  -d -p 6385:26379 --name redis-sentinel -v /redis-sentinel/conf:/redis/conf -v /redis-sentinel/data/:/data/  redis:7.0.2 redis-sentinel /redis/conf/redis.conf
#端口默认为26379,也可以在配置文件设置,这里也需要对应的改动和配置文件一样。

 4.启动完成之后就可以进入到容器查看

先进入sentinel那台容器内
docker exec -it redis-sentinel bash #redis-sentinel容器别名
redis-cli -p 26379 

info sentinel

 查看监控信息详情如下:

[root@wcs6-test conf]# docker exec -it redis-sentinel bash
root@cd09455ee442:/data# redis-cli -p 26379         
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:3
sentinel_tilt:0
sentinel_tilt_since_seconds:-1
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=redis1,status=ok,address=3.200.0.6:6379,slaves=1,sentinels=1
master1:name=redis3,status=ok,address=3.200.0.9:6379,slaves=1,sentinels=1
master2:name=redis2,status=ok,address=3.200.0.8:6379,slaves=1,sentinels=1

非集群环境下主从 :进入到某台redis中然后输入命令:slaveof xx.xx.xx.xx port(主机端口)可以设置主从关系

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值