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 搭建集群内部就不需要再去搭建主从关系了

 

 

 

 

 

 

 
posted @ 2023-07-28 10:38  vba是最好的语言  阅读(185)  评论(0编辑  收藏  举报