docker-部署redis
第一步:pull一个redis最新镜像
Docker pull redis
创建/修改配置文件
cd /home/apps/redis-master/conf --这个配置文件很重要,否则本机无法连接上。 wget http://download.redis.io/redis-stable/redis.conf
redis.conf 文件下载地址:https://github.com/redis/redis/blob/7.0/redis.conf
这里注意一下,我当前拉取的 redis 镜像版本就是 7.0.0,所以 redis.conf 也是找的 7.0,要版本对应。
这个文件下载好之后不要着急上传,修改几个东西。
把 appendonly 该为 yes;把 requirepass 注释打开,并设置一个密码;bind:127.0.0.1 注释掉;(这个 appendonly 是开启 redis 持久化,不懂得去看我 redis 博客)
加两个新的命令
docker run -p 6379:6379 --name redis-master --privileged=true -v /DockerContainerProperties/redis-master/conf/redis.conf:/etc/redis/redis.conf -v /DockerContainerProperties/redis-master/data:/data -d redis:7.0 redis-server /etc/redis/redis.conf
docker run -p 6380:6380 --name redis-slave-01 --privileged=true -v /DockerContainerProperties/redis-slave-01/conf/redis.conf:/etc/redis/redis.conf -v /DockerContainerProperties/redis-slave-01/data:/data -d redis:7.0 redis-server /etc/redis/redis.conf
-- 修改配置文件,参考第5步 vim redis.conf
建成的目录如下:
每一个目录下面都有:
redis.conf相关配置详解:
命令 | 描述 |
---|---|
-d | 后台运行 |
--restart=always | 重启docker时,自动启动相关容器 |
--privileged=true | 以特权方式启动容器,解决报错问题(Permission denied) |
--appendonly yes | redis持久化 |
redis-server /etc/redis/redis.conf | Redis 容器中设置 redis-server 每次启动读取 /etc/redis/redis.conf 这个配置为准 |
\ | shell 命令换行 |
修改redis.conf配置
命令 | 功能 |
---|---|
appendonly yes | 启动Redis持久化功能 |
protected-mode no | 关闭protected-mode模式,此时外部网络可以直接访问 (docker貌似自动开启了) |
bind 0.0.0.0 | 注释掉,设置所有IP都可以访问 (docker貌似自动开启了) |
requirepass 密码 | 设置密码 |
dir ./ | 输入本地redis数据库存放文件夹 |
第二步:启动一个主redis容器 端口6379+挂载
docker run
--restart=always
--log-opt max-size=100m
--log-opt max-file=2
-p 6379:6379
--name redis-master
--privileged=true
-v /DockerContainerProperties/redis/redis-master.conf:/etc/redis/redis.conf
-v /DockerContainerProperties/redis/data:/data
-d redis redis-server /etc/redis/redis.conf
--appendonly yes
--requirepass root
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis-master --privileged=true -v /DockerContainerProperties/redis-master/conf/redis.conf:/etc/redis/redis.conf -v /DockerContainerProperties/redis-master/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass root
命令解释:
–restart=always 总是开机启动 –log是日志方面的 -p 6379:6379 将6379端口挂载出去 –name 给这个容器取一个名字 -v 数据卷挂载 当有人把当前运行的redis镜像删除,重新运行一个新的可以保证数据不会丢失 /DockerContainerProperties/redis/master-redis.conf 这里是将 liunx 路径下的master-redis.conf 和redis下的/etc/redis/redis.conf 挂载在一起。 /DockerContainerProperties/redis/data:/data 这个同上 -d redis 表示后台启动redis redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的/home/redis/myredis/myredis.conf –appendonly yes 开启redis 持久化 –requirepass 888888 设置密码
redis相关命令:
以下是 Redis 的常用命令: 设置键值对:SET key value - 将键 key 的值设为 value 获取键的值:GET key - 返回键 key 的值 判断键是否存在:EXISTS key - 检查键 key 是否存在 删除键值对:DEL key - 删除键 key 和它对应的值 设置键的过期时间:EXPIRE key seconds - 设置键 key 的过期时间为 seconds 秒 获取键的剩余过期时间:TTL key - 返回键 key 的剩余过期时间(以秒为单位) 自增键的值:INCR key - 将键 key 的值加 1 自减键的值:DECR key - 将键 key 的值减 1 列出符合给定模式的所有键:KEYS pattern - 返回所有符合给定模式 pattern 的键 写入列表:LPUSH key value - 在列表 key 的左边插入值 value 读取列表:LRANGE key start end - 返回列表 key 中指定范围内的元素 写入集合:SADD key member - 向集合 key 中添加成员 member 读取集合:SMEMBERS key - 返回集合 key 中的所有成员 写入有序集合:ZADD key score member - 向有序集合 key 中添加带有分数 score 的成员 member 读取有序集合:ZRANGE key start end - 返回有序集合 key 中指定范围内的成员
docker中打开redis 客户端 cli
docker exec -it redis-master redis-cli
第四步,启动一个从redis容器 端口6380。
-- 修改从库配置 经测试,修改配置文件有效。
vim /DockerContainerProperties/redis-slave-01/conf/redis.conf
# 配置连接主库信息
replicaof 192.168.3.13 6380
# 从机只读模式默认是开启的:
replica-read-only yes
# 配置主库密码 masterauth 123456
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6380:6380 --name redis-slave-01 --privileged=true -v /DockerContainerProperties/redis-slave-01/conf/redis.conf:/etc/redis/redis.conf -v /DockerContainerProperties/redis-slave-01/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass root
要使用ifconfig命令需要安装
yum install net-tools
或使用其他命令
ip addr show
第五步:查看redis-master容器信息
在其中运行docker inspect redis-master命令查看redis-master,通过IPAddress项看到该容器的IP地址,这里是172.17.0.2
第六步: 主从复制配置
slaveof 172.17.0.2 6379
第七步:通过info replication命令查看主从配置信息
redis-master容器中输入:info replication
第八步:主从复制测试
二 集群搭建:还不行。。多练
先建好文件夹。复制过去redis.conf
docker run -p 6381:6381 --name redis-master-02 --privileged=true -v /DockerContainerProperties/redis-master-02/conf/redis.conf:/etc/redis/redis.conf -v /DockerContainerProperties/redis-master-02/data:/data -d redis:7.0 redis-server /etc/redis/redis.conf docker run -p 6382:6382 --name redis-slave-02-01 --privileged=true -v /DockerContainerProperties/redis-slave-02-01/conf/redis.conf:/etc/redis/redis.conf -v /DockerContainerProperties/redis-slave-02-01/data:/data -d redis:7.0 redis-server /etc/redis/redis.conf docker run -p 6384:6384 --name redis-master-03 --privileged=true -v /DockerContainerProperties/redis-master-03/conf/redis.conf:/etc/redis/redis.conf -v /DockerContainerProperties/redis-master-03/data:/data -d redis:7.0 redis-server /etc/redis/redis.conf docker run -p 6385:6385 --name redis-slave-03-01 --privileged=true -v /DockerContainerProperties/redis-slave-03-01/conf/redis.conf:/etc/redis/redis.conf -v /DockerContainerProperties/redis-slave-03-01/data:/data -d redis:7.0 redis-server /etc/redis/redis.conf
参考博客:https://blog.51cto.com/u_11827525/2854652,https://blog.51cto.com/u_11827525/2854652 搭建集群内部就不需要再去搭建主从关系了