WSL2+docker+redis 数据卷挂载部署

环境

Docker (基于WSL2)
WSL2 系统版本:Ubuntu20.04.4 LTS
已在Docker中拉取了redis最新镜像

建立数据挂载目录

tips:出于学习目的,我是在root用户下进行操作,普通用户下遇到访问受限问题请自行添加sudo前缀

先到Ubuntu的主目录下,然后去tmp文件夹下创建redis文件夹

cd tmp/
mkdir redis

在这里插入图片描述
tips:你可以指定其他位置,下文相关路径别忘记要做出相应调整。

在该目录下创建配置文件redis.conf
文件内容https://gitee.com/wangyue123com_admin/helpdocument/blob/master/package/redis.conf

再对redis.conf进行一些修改:
允许远程访问(让windows可以用redis desktop manager等工具访问redis):

bind 0.0.0.0

定义工作目录(等一下数据挂载到这个位置):

dir /usr/local/etc/redis

允许数据持久化(可选项,没需求可以不改):

appendonly yes

日志文件位置(我这里是给了一个空字符串让redis将日志打印到控制台):

logfile ""

结尾我会补充说明让redis输出文件到日志所需要做的工作

docker run 将数据挂载

docker run -d --privileged=true \
-p 6379:6379 \
-v /tmp/redis:/usr/local/etc/redis \
--name redis redis \
redis-server /usr/local/etc/redis/redis.conf \

参数说明:

-d  # 后台运行
--privileged=true # 给redis授予root权限,避免对数据卷的访问受限
-p 6379:6379 # 监听端口映射
-v /tmp/redis:/usr/local/etc/redis # 将/tmp/redis挂载为工作目录
--name redis redis # 设置容器名称和镜像
redis-server /usr/local/etc/redis/redis.conf # 指明所用的配置文件位置,根据之前的数据卷映射,真实的配置文件就是我们手动创建的那个

查看输出的日志,容器成功运行:
在这里插入图片描述

输出日志到文件的做法

情况一

在配置文件中做如下修改

logfile redis-server.log

重新启动redis后,日志会被记录在挂载的工作目录下:
在这里插入图片描述
在这里插入图片描述

情况二

还可以另外指定log目录单独挂载

比如我把log文件放这里:
在这里插入图片描述
在这里插入图片描述
修改配置文件如下:

logfile /log/redis-server.log

在创建容器的时候添加这个新目录作为挂载:

docker run -d --privileged=true \
-p 6379:6379 \
-v /tmp/redis:/usr/local/etc/redis \
-v /tmp/redis/log:/log \  # log目录挂载点
--name redis redis \
redis-server /usr/local/etc/redis/redis.conf

容器启动后可以看到日志:
在这里插入图片描述
这个时候可能会出现启动不成功,但log目录下确实出现了log文件,控制台报告Permission denied的错误
ll指令发现redis对log文件的访问权限不足,需要用chmod命令对日志文件赋予写权限。
在这里插入图片描述

cd到log目录下,执行以下命令

chmod a+xrw redis-server.log

在这里插入图片描述

### 启动和配置Redis容器 在WSL2环境中利用Docker启动并配置Redis容器涉及几个关键步骤,包括但不限于设置环境变量、定义持久化存储路径以及指定端口映射。对于Ubuntu 20.04.4 LTS操作系统,在已经成功拉取最新的Redis镜像之后,可以按照如下方法操作。 为了确保数据的安全性和持久性,建议预先建立用于挂载的数据目录[^1]。这一步骤至关重要,因为它允许将容器内的特定文件夹绑定到本地磁盘上的位置,从而实现即使容器被删除也能保留重要数据的目的。 接着,通过`docker run`命令来启动Redis服务,并将其暴露给外部网络以便其他应用程序能够访问它。具体来说,可以通过下面这条命令完成: ```bash docker run --name my-redis -p 6379:6379 -v /path/to/local/dir:/data -d redis:latest redis-server --appendonly yes ``` 上述命令中的参数解释如下: - `--name my-redis`: 给新创建的容器命名; - `-p 6379:6379`: 将宿主机的6379端口映射至容器内部相同的端口号上; - `-v /path/to/local/dir:/data`: 设置卷挂载点,其中`/path/to/local/dir`应替换为实际想要使用的绝对路径名; - `-d redis:latest`: 使用官方仓库里的最新版Redis作为基础镜像运行后台守护进程模式下的服务器实例; - `redis-server --appendonly yes`: 开启AOF(Append Only File)日志记录功能以增强数据恢复能力[^4]。 值得注意的是,如果希望从Windows系统中存取位于Linux子系统的资源,则需注意两者间不同的文件系统结构差异。例如,在指定期望挂载的目标地址时,应当采用适用于当前工作环境的有效表达方式。 当遇到Spring Boot应用尝试连接处于Docker容器之内的Redis却遭遇失败的情况时,可能是因为防火墙规则阻止了必要的通信流量或者是由于客户端请求指向错误的服务定位信息所致。此时应该仔细检查网络配置情况,确认所有相关组件均能正常交互无误[^2]。 最后提醒一点,虽然默认情况下Redis监听于localhost(即127.0.0.1),但对于某些场景而言或许还需要进一步调整其行为特性——比如修改配置文件使其实现对外部IP地址开放监听等功能扩展[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值