环境
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