开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情
准备配置文件
在部署容器之前,我们提前先把redis的配置文件准备好,先在github上面下载|拷贝redis.conf,并且修改以下几项配置:
# 如果只允许本机客户端访问请修改成bind 127.0.0.1
# bind * 表示任意客户端都可以访问
bind *
# 是否开启保护模式,默认是yes
# 保护模式是在没有设置密码的情况下,只允许本机客户端访问
protected-mode no
# 默认端口6379
port 6379
# 设置密码
requirepass 密码
# 设置日志文件
logfile "/logs/6379.log"
剩下的其他配置暂时可以不修改。
编写docker-compose.yaml
我们先从docker镜像仓库找到redis镜像,目前最新版本是7.0.5;
version: "3.1"
services:
redis7:
image: redis:7.0.5
container_name: redis7
ports:
- "6379:6379"
volumes:
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime" #设置系统时区
- "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone" #设置时区
- "./redis/conf:/usr/local/etc/redis"
- "./redis/data:/data"
- "./redis/data/logs:/logs"
command: redis-server /usr/local/etc/redis/redis.conf
1.我们需要把第一步编写好的redis.conf放进
./redis/conf文件夹中,这样的话,它就会映射到容器中的/usr/local/etc/redis文件夹,启动命令才能指定目标配置文件;2.日志文件的挂载地址建议放到
./redis/data中,否则可能会出现没有权限的问题;
在docker-compose.yaml文件编写完成后,我们就可以使用docker-compose up -d redis7创建并启动redis容器了。
部署问题
在容器启动成功后,我们可以通过cat ./redis/data/logs/6379.log查看日志文件;在日志文件中,可能会出现以下警告:
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
这个警告的意思是说,redis.conf中配置的tcp-backlog 511,但是系统中的相关配置是128,redis没法按照redis.conf中的配置来处理tcp请求。这个解决方案就是要么修改redis.conf中的tcp-backlog配置,要么修改系统的/proc/sys/net/core/somaxconn文件;
WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
第二个问题也很明显,系统中默认的overcommit_memory值是0,在内存不足的情况下,可能会导致持久化失败,建议在/etc/sysctl.conf文件中添加一行vm.overcommit_memory = 1,并通过sysctl vm.overcommit_memory=1使它生效;