1.起因
公司申请了六台华为鲲鹏服务器,操作系统是openEuler的,一开始按照redis官网的安装流程安装,在make的时候报错,不知道是什么问题,如果有人知道的话欢迎指导一下;然后选择使用Docker来安装redis,在这里记录个坑,在ARM64架构的电脑下用docker启动redis无法正常启动
2.解决办法
首先安装docker
yun install docker
然后用docker拉去redis镜像
docker pull redis
然后我们启动redis
docker run -itd --name redis -p 6379:6379 redis
但是我们用命令docker ps查看是否启动时,发现没有启动,我们查看一下日志
docker logs --tail=1000 containerid
我们注意最后一行,然后我查阅了一下,在GitHub上,有人提交了一个issue,问题意思就是在ARM64的电脑运行redis会有问题
详见https://github.com/redis/redis/commit/b02780c41dbc5b28d265b5cf141c03c1a7383ef9
然后注意到本次修改文件涉及到配置文件的修改:
# In some cases redis will emit warnings and even refuse to start if it detects
# that the system is in bad state, it is possible to suppress these warnings
# by setting the following config which takes a space delimited list of warnings
# to suppress
#
# ignore-warnings ARM64-COW-BUG
那么我们要解决这个问题,需要把该注释放开。那么这样的话,我们就需要配置启动参数,把外部的配置文件放入容器内,让容器启动执行该配置文件
贴一个下载redis.conf的地址:https://raw.githubusercontent.com/redis/redis/6.0/redis.conf
然后我们在该配置文件最下面把这条注释放开,然后赋予该文件777权限(chmod +777 /data/redis/redis.conf 否则redis无法挂载该文件到容器内)
然后修改一下启动命令
docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
-p (指定端口) 对外暴露端口:容器内部端口(redis.conf内部配置端口)
-v 挂载目录 将当前宿主机的/data/redis/redis.conf文件挂载到容器/etc/redis/redis.conf文件
-v .. 将当前宿主机的/data/redis/data目录挂载到容器的/data目录
-d 在后台启动并使用 容器的/etc/redis/redis.conf文件
—appendonly yes 开启redis的aof持久化
然后我们执行该命令,再次查看:
这样,我们就安装成功了~