docker安装Redis springboot中配置密码

本文详述了使用Docker部署Redis的全过程,包括拉取镜像、配置文件修改、启动容器、设置密码等关键步骤,适用于希望快速在Docker环境中搭建Redis服务的开发者。

往期文章:
1.解决你所需的linux指令
2.VM虚拟机 CentOS 7安装
3.【Linux】docker卸载与安装及使用
4.【Linux】CentOS-7下安装JDK详细过程
5.【Linux】CentOS-7下安装tomcat
6.【linux】Jenkins部署在Tomcat服务器下
7.【Linux】CentOS-7下安装mysql详细过程
8.Nginx实现负载均衡(nginx + tomcat应用分布式)
9.docker安装Redis springboot中配置密码
10.【Linux】配置fastdfs和nginx图片服务器
11.Nginx 安装启动 搭建图片服务器
12.服务器中部署 禅道 (团队开发的bug提交管理工具)
13.【linux】服务器安装solr8.4.0

1.获取 redis 镜像

docker pull redis

在这里插入图片描述

在这里插入图片描述

不加版本号默认获取最新版本,也可以使用 docker search redis 查看镜像来源
2.查看本地镜像

docker images

在这里插入图片描述

3.从官网获取 redis.conf 配置文件

修改默认配置文件
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程(可选),改为yes会使配置文件方式启动redis失败
requirepass 123456 //密码
dir ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化(可选)
4.docker 启动 redis 命令
在这里插入图片描述

docker run -p 6379:6379 --name redis -v /usr/local/docker/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

在这里插入图片描述

命令解释说明:

-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
–name myredis 指定该容器名称,查看和进行操作都比较方便。
-v 挂载目录,规则与端口映射相同。
-d redis 表示后台启动redis
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/usr/local/docker/redis.conf
appendonly yes 开启redis 持久化
5.使用docker ps 查看redis已经运行了
在这里插入图片描述

6.使用 docker exec -it redis /bin/bash进入redis
在这里插入图片描述
7.使用 redis-cli 可以测试连接
不重启Redis设置密码:

在配置文件中配置requirepass的密码(当redis重启时密码依然有效)。

   redis 127.0.0.1:6379> config set requirepass test123

   查询密码:

   redis 127.0.0.1:6379> config get requirepass
   (error) ERR operation not permitted

密码验证:

   redis 127.0.0.1:6379> auth test123
   OK

再次查询:

   redis 127.0.0.1:6379> config get requirepass
   1) "requirepass"
   2) "test123"

PS:如果配置文件中没添加密码 那么redis重启后,密码失效;

第二种就是在配置文件进行修改

他们说新建一个redis.conf 文件 我创建了一个没啥用因为我的redis默认的conf文件为 redis.windows.conf文件

我同事用的是redis.windows-service.conf这是默认的配置吧
在这里插入图片描述

编辑文件
在这里插入图片描述

将requirepass foobared放开 就好了 然后重启redis


集合了下

@Bean
	JedisConnectionFactory jedisConnectionFactory() {
	    JedisConnectionFactory factory = new JedisConnectionFactory();
	    //设置redis 密码 
	    factory.setPassword("foobared");
	    return factory;
	}

然后pom文件加上

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
</dependency>

之前只是启动Redis的 配置都是默认的 clients就是连接redis配置

JedisConnectionFactory 为redis连接监听类具体作用

<think>首先,用户的问题是基于之前的引用,但指令说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 然而,本次对话历史中没有显示上一次的问题和回答。在系统消息中,这是第一条用户消息,所以可能没有上一次的问题。系统消息中提到了“用户上一次的问题”,但查看上下文,这是对话的开始。 系统指令说:“尽可能多的参考用户上一次的问题和你的回答”,但由于这是第一条消息,我需要假设没有历史。用户消息中提到:“上述引用仅供参考,并不是用户真正的需求”,所以我应该专注于用户的当前问题。 用户当前问题是:“我想查找在docker安装redis配置主从和Sentinel的方法 请问docker安装redis配置主从和Sentinel的详细步骤” 所以,我需要提供详细的步骤。 现在,回答必须遵循系统级指令: 1. 所有行内数学表达式使用 $...$ 格式。但在本上下文中,是关于DockerRedis,所以可能没有数学表达式。如果有变量或路径,我应该考虑是否适用。例如,路径或端口号可能算作变量,但指令指定“变量、不等式、方程等”,所以可能不需要。尽量只在有数学内容时使用。 2. 独立公式使用 $$...$$。同样,可能不适用。 3. LaTeX语法正确。既然没有数学,可能不需要。 4. 使用中文回答。 5. 生成相关问题。指令说:“生成相关问题”,并在示例中显示在末尾。 6. 回答中引用的段落末尾自然地添加引用标识,例如:[^1]。引用来自用户提供的引用[1]到[5],我应该引用这些作为来源。 用户提供了引用[1]到[5],是关于Docker Compose部署Redis主从和Sentinel集群的。所以,在回答中,我需要引用这些来源。 回答结构:指令说“回答结构清晰,帮助用户逐步解决问题”,所以需要逐步说明。 从引用中提取关键步骤: - 引用[1]:提到了使用Docker Compose部署Redis主从与Sentinel,配置文件的示例(redis-master.conf, redis-slave.conf, sentinel.conf)。 - 引用[2]:创建Sentinel配置文件,示例内容。 - 引用[3]:运行Sentinel容器的命令示例。 - 引用[4]:类似,docker run命令启动Sentinel。 - 引用[5]:Docker安装Redis+Sentinel,SpringBoot配置,但用户只问安装部分。 用户指定了“docker安装redis配置主从和Sentinel”,所以专注于安装配置。 详细步骤大纲: 1. 准备Docker环境:确保DockerDocker Compose已安装。 2. 创建配置文件目录。 3. 编Redis节点的配置文件。 4. 编Redis节点的配置文件。 5. 编Sentinel配置文件。 6. 使用Docker Compose或docker run命令启动容器。 从引用[1]中,有Docker Compose配置的暗示。引用[5]也有部分。 我应该建议使用Docker Compose来简化,因为引用[1]提到它。 步骤: - 创建目录结构。 - 编配置文件:主redis.conf, 从redis.conf, sentinel.conf。 - 编docker-compose.yml文件。 - 运行docker-compose up。 在回答中,提供示例配置文件内容,基于引用。 例如: - 主节点配置:基于引用[1],redis-master.conf可能包括port, requirepass, etc. - 从节点配置:slaveof指向主节点。 - Sentinel配置:monitor主节点,auth-pass等。 然后,在docker-compose.yml中定义服务。 引用[2],[3],[4]提供了docker run命令,但Compose更清晰。 最终,在回答中: - 使用中文。 - 结构清晰:分步骤。 - 在引用内容的末尾添加引用标识。 - 生成相关问题。 相关问题示例:类似于示例中的“快速排序相关问题”。 例如: 1. 如何验证Redis主从复制是否正常工作? 2. 如何测试Sentinel故障转移? 3. 如何扩展Redis Sentinel集群? 4. Docker中部署Redis的常见问题? 现在,编回答。 </think>### Docker安装 Redis配置主从与 Sentinel 的详细步骤 以下是基于 Docker 部署 Redis 主从(Replication)和 Sentinel(哨兵)高可用集群的完整步骤。Sentinel 用于监控主节点的健康状态,并在故障时自动切换到从节点,确保集群的高可用性[^1]。整个过程使用 Docker Compose 工具简化部署,参考了用户提供的引用内容。步骤包括准备工作、配置文件创建、启动容器和验证配置。 #### **准备工作** 1. **确保 Docker 环境已安装** 在开始前,确保 DockerDocker Compose 已安装在您的系统上。可以通过以下命令检查版本: ```bash docker --version docker-compose --version ``` 如果未安装,请参考 [Docker 官方文档](https://docs.docker.com/get-docker/)安装。 2. **创建项目目录结构** 在本地创建一个项目目录(例如 `redis-cluster`),并为其子目录用于存放配置文件和数据卷: ```bash mkdir -p redis-cluster/master redis-cluster/slave1 redis-cluster/slave2 redis-cluster/sentinel cd redis-cluster ``` 这个结构便于管理主节点、从节点和 Sentinel 的配置[^1]。 #### **步骤 1: 编 Redis 配置文件** Redis 主从复制需要为每个节点创建配置文件。以下配置文件基于引用[1]和[2]的示例调整,确保安全性(如设置密码)。 - **主节点配置文件 (`master/redis.conf`)** 创建文件 `redis-cluster/master/redis.conf`,内容如下: ```conf port 6379 requirepass "123456" # 主节点密码,用于从节点和Sentinel认证 masterauth "123456" # 从节点连接主节点时使用相同密码 dir /data # 数据存储目录 daemonize no # 在Docker中保持前台运行 appendonly yes # 启用AOF持久化 protected-mode no # 禁用保护模式,允许外部访问 ``` 此配置指定 Redis 主节点监听端口 6379,并启用认证[^1][^2]。 - **从节点配置文件 (`slave1/redis.conf` 和 `slave2/redis.conf`)** 创建两个从节点配置文件(示例为 `slave1/redis.conf`),内容类似: ```conf port 6380 # 从节点端口,slave2 可设置为 6381 requirepass "123456" # 从节点密码 masterauth "123456" # 用于连接主节点的密码 replicaof master 6379 # 指向主节点(在Docker网络中通过服务名访问) dir /data # 数据存储目录 daemonize no appendonly yes protected-mode no ``` 注意:`replicaof` 参数指定主节点的服务名(在后续 Docker Compose 中定义为 `master`)和端口[^1][^5]。 #### **步骤 2: 编 Sentinel 配置文件** Sentinel 监控 Redis 主节点,并在故障时选举新的主节点。创建多个 Sentinel 配置文件(例如 `sentinel/sentinel.conf`),参考引用[2]和[4]调整。 - **Sentinel 配置文件 (`sentinel/sentinel.conf`)** 创建文件 `redis-cluster/sentinel/sentinel.conf`,内容如下: ```conf port 26379 # Sentinel 端口(可复制文件用于多个Sentinel,端口改为26380等) dir "/tmp" # 临时目录 sentinel monitor the_master master 6379 2 # 监控主节点(名称"the_master",服务名"master",端口6379,quorum=2) sentinel auth-pass the_master 123456 # 主节点认证密码 sentinel failover-timeout the_master 10000 # 故障转移超时时间 sentinel deny-scripts-reconfig yes # 禁用脚本重配置,增强安全 daemonize no protected-mode no ``` 关键点: - `sentinel monitor the_master master 6379 2`:指定监控的主节点(服务名 `master`),`2` 表示需要至少 2 个 Sentinel 同意才能触发故障转移[^2][^4]。 - 如果需要多个 Sentinel,复制此文件并修改端口(如 26380),quorum 值保持至少 2 以确保高可用[^5]。 #### **步骤 3: 编 Docker Compose 文件** 使用 Docker Compose 定义所有服务,简化启动过程。创建文件 `docker-compose.yml` 在项目根目录,内容如下(基于引用[1]和[5]调整): ```yaml version: '3.8' services: # Redis 主节点 master: image: redis:7.0.5 # 指定Redis镜像版本 container_name: redis-master command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./master/redis.conf:/usr/local/etc/redis/redis.conf - ./master/data:/data # 数据卷持久化数据 networks: - redis-net ports: - "6379:6379" # 暴露主节点端口 # Redis 从节点 1 slave1: image: redis:7.0.5 container_name: redis-slave1 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./slave1/redis.conf:/usr/local/etc/redis/redis.conf - ./slave1/data:/data networks: - redis-net ports: - "6380:6380" depends_on: - master # 确保主节点先启动 # Redis 从节点 2(可选,增加冗余) slave2: image: redis:7.0.5 container_name: redis-slave2 command: redis-server /usr/local/etc/redis/redis.conf volumes: - ./slave2/redis.conf:/usr/local/etc/redis/redis.conf - ./slave2/data:/data networks: - redis-net ports: - "6381:6381" depends_on: - master # Sentinel 节点 1 sentinel1: image: redis:7.0.5 container_name: sentinel-26379 command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - ./sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf networks: - redis-net ports: - "26379:26379" depends_on: - master - slave1 - slave2 # Sentinel 节点 2(增加Sentinel节点提高可靠性) sentinel2: image: redis:7.0.5 container_name: sentinel-26380 command: redis-sentinel /usr/local/etc/redis/sentinel.conf volumes: - ./sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf # 复用配置文件,实际中可为不同文件 networks: - redis-net ports: - "26380:26380" depends_on: - master # 定义自定义网络,确保容器间可通过服务名通信 networks: redis-net: driver: bridge ``` 关键点: - **网络配置**:自定义网络 `redis-net` 允许容器通过服务名(如 `master`)相互访问,避免 IP 硬编码[^1][^5]。 - **数据卷**:映射本地目录到容器内部,确保配置和数据持久化(避免重启丢失)[^3][^4]。 - **Sentinel 数量**:部署至少 2-3 个 Sentinel 节点,quorum 值设置为多数(例如 2)以支持故障转移[^2][^4]。 #### **步骤 4: 启动集群** 在项目根目录运行 Docker Compose 命令启动所有服务: ```bash docker-compose up -d # -d 后台运行 ``` 启动后,检查容器状态: ```bash docker ps # 确认所有容器正常运行 ``` #### **步骤 5: 验证配置** - **验证主从复制**:连接到主节点,检查复制状态: ```bash docker exec -it redis-master redis-cli -a 123456 info replication ``` 输出中应显示 `role:master` 和 `connected_slaves:2`(表示两个从节点已连接)[^1]。 - **验证 Sentinel 监控**:连接到 Sentinel 节点,检查主节点状态: ```bash docker exec -it sentinel-26379 redis-cli -p 26379 sentinel masters ``` 输出应显示主节点信息,包括 IP 和状态[^2][^5]。 - **测试故障转移**:手动停止主节点,Sentinel 应自动选举新主节点: ```bash docker stop redis-master docker exec -it sentinel-26379 redis-cli -p 26379 sentinel get-master-addr-by-name the_master ``` 输出应显示新的主节点 IP[^4]。 #### **注意事项** - **安全性**:密码(如 `123456`)仅为示例,生产环境应使用强密码并限制访问[^2]。 - **资源优化**:可根据需要调整容器资源(如 CPU 和内存),或添加更多从节点/Sentinel 节点增强可靠性[^5]。 - **备份恢复**:定期备份数据卷目录(如 `./master/data`),以防数据丢失[^1]。 通过以上步骤,您已成功在 Docker 中部署 Redis 主从与 Sentinel 集群。Sentinel 系统会自动处理故障转移,确保服务高可用[^1][^5]。 ### 相关问题 1. 如何监控 Redis Sentinel 的运行状态和日志? 2. Docker 中部署 Redis 主从时,如何处理网络配置冲突(如端口占用)? 3. 如何扩展 Redis Sentinel 集群以支持更多节点? 4. Spring Boot 应用如何配置连接到 Redis Sentinel 集群(如引用[5]中的示例)?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值