docker部署redis后,修改配置文件的requirepass后无效

文章详细介绍了如何使用dockerrun命令部署Redis容器,强调了不要使用--requirepass参数以避免覆盖配置文件中的密码设置。同时,提到了容器的权限设置、端口映射、数据卷挂载、日志管理和配置文件修改等关键步骤,并提醒在修改配置文件后如已使用--requirepass,密码将无法更新。最后,给出了部分Redis配置示例,包括安全性设置如requirepass和protected-mode。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决方案

执行docker run命令时不要使用参数–requirepass

docker部署redis流程(问题复现)

1. 启动redis容器

在服务器docker运行时,执行下列命令。(会自动在远程仓库下载镜像)
redis:

docker run \
--restart=always \
--privileged=true \
--log-opt max-size=100m \
--log-opt max-file=3 \
-p 6379:6379 \
--name redis_1 \
-v redis_conf:/etc/redis \
-v redis_data:/data \
-v /etc/localtime:/etc/localtime:ro \
-d redis:7.0.5 \
redis-server /etc/redis/redis.conf \
--appendonly yes \
--requirepass 123456

–privileged=true 这个参数,容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
–restart=always 总是开机启动(可以改为其他形式或者直接取消 https://blog.csdn.net/chj_1224365967/article/details/109029856
–log是日志方面的(https://www.cnblogs.com/cxbhakim/p/8677928.html
-p 6379:6379 将6379端口挂载出去
–name 给这个容器取一个名字
-v 数据卷挂载
redis_conf:/etc/redis/redis.conf 这里是将 liunx 路径下的 redis_conf(docker会自动生成一个路径统一管理) 和redis下的redis.conf 挂载在一起。
redis_data:/data 这个同上
当宿主机为 Linux 系统时,我们可以直接将宿主机上的/etc/timezone和/etc/localtime挂载到容器中,这样可以保持容器和宿主机时区和时间一致。
-d 表示后台启动redis
redis 镜像名称
redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf 也就是liunx下的redis_conf
–appendonly yes 开启redis 持久化 (aof append only file)

注意这里的密码最好别设置,否则这里设置的密码的优先级会高于配置文件,以至于修改配置文件中的requirepass后,redis密码并没有被修改
–requirepass 123456 设置密码 (如果你是通过docker 容器内部连接的话,就随意,可设可不设。但是如果想向外开放的话,一定要设置)

再执行docker ps,容器启动成功后如下图所示。
在这里插入图片描述

2. 找到挂载在服务器上的文件路径

执行docker volume ls,找到刚配置的volume名称。
在这里插入图片描述
然后执行docker volume inspect redis_conf,会找到该redis_conf在服务器上的路径。
在这里插入图片描述
在该目录下,放入文件redis.conf
在这里插入图片描述

3. 修改配置文件

自己新建一个文件,将下面的配置复制粘贴进去即可。(当然个人推荐去下载官方配置,不清楚的配置可以自行百度)
然后修改一下requirepass再重启容器即可成功修改密码(注意: 如果执行docker run命令时使用了参数–requirepass,则修改了配置之后无法修改redis密码)。

# 默认情况bind=127.0.0.1只能接受本机的访问请求
# 不写的情况下,无限制接受任何ip地址的访问
# 生产环境肯定要写你应用服务器的地址;服务器是需要远程访问的,所以需要将其注释掉

# bind 192.168
### 如何在 Docker部署 Redis修改 `redis.conf` 配置文件 #### 一、准备工作 为了在 Docker 容器中成功部署 Redis,并能够自定义配置文件,首先需要创建必要的目录结构以及初始化配置文件。 通过以下命令可以完成这些操作: ```bash mkdir -p /mydata/redis/conf && vim /mydata/redis/conf/redis.conf ``` 此命令的作用是创建用于存储 Redis 配置文件的路径 `/mydata/redis/conf`,并将默认或定制化的配置写入到该位置下的 `redis.conf` 文件中[^1]。 #### 二、编辑 `redis.conf` 的关键参数 以下是几个常见的配置项及其作用: - **开启 AOF 持久化模式** ```conf appendonly yes ``` 此选项表示启用 Append Only File (AOF),它会记录服务器接收到的每一个写操作指令,在服务重启时重新执行这些指令来恢复数据状态[^2]。 - **设置监听端口** ```conf port 6379 ``` - **绑定 IP 地址** ```conf bind 0.0.0.0 ``` 设置允许访问 Redis 实例的地址范围。这里设为 `0.0.0.0` 表示接受来自任何网络接口上的连接请求。 #### 三、启动 Redis 容器 利用之前准备好的配置文件和指定的数据卷映射关系,可以通过下面的方式启动 Redis 容器实例: ##### 方法一:单条命令方式 ```bash docker run -d \ -p 6379:6379 \ --restart=always \ -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /mydata/redis-01/data:/data \ --name redis-01 \ redis:6.2.5 \ redis-server /etc/redis/redis.conf ``` 上述命令实现了以下几个功能: - `-d`: 背景运行容器; - `-p`: 将主机的 6379 端口映射至容器内的相同端口号; - `--restart=always`: 当宿主机重启后自动拉起容器; - `-v ...`: 把本地磁盘中的配置文件及数据目录挂载进容器内部相应的位置; - `--name`: 给新创建出来的容器命名以便于管理识别; - 最后的镜像名指定了使用的版本号为 6.2.5 版本的官方 Redis 镜像。 ##### 方法二:Compose 方式 如果项目较为复杂或者希望简化多服务间的协调工作,则推荐采用 Compose 工具来进行编排。先编写好对应的 YAML 格式的描述文档,例如命名为 `docker-compose.yml`: ```yaml version: '3' services: redis50: image: redis:5.0.14 container_name: redis5014 ports: - "6379:6379" volumes: - /root/middleware-docker/redis/redis.conf:/etc/redis.conf - /data/docker/redis_data:/data - /data/docker/redis_data/log:/var/log/redis command: ["redis-server", "/etc/redis.conf"] restart: always ``` 之后只需简单地调用一次 `docker-compose up -d` 即可按照设定快速搭建环境[^3]。 #### 四、验证部署成果 最后一步非常重要——确认整个流程无误且正常运作。尝试连接刚建立起来的服务节点查看基本信息返回情况即可得知是否一切顺利。 ```bash docker exec -it redis-01 redis-cli ping # 应当得到 PONG 响应代表通信链路畅通无障碍 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值