CentOS下启动Redis官方容器时提示Unsupported system page size的解决方法

问题现象描述

在TaiShan服务器CentOS 7.6上使用docker run -it --rm redis命令启动Redis官方容器,提示如下信息:

<jemalloc>: Unsupported system page size
<jemalloc>: Unsupported system page size

关键过程、根本原因分析

Redis在新版本中默认使用了jemalloc进行内存管理。

由于jemalloc 在编译时就决定了page size的大小,而这个page size会由于kernel的配置而改变,因此jemalloc在某个机器上编译,然后运行在其它机器上时可能会出现问题。

推测可能是由于官方ARM镜像的编译环境的page size与当前运行环境的page size不一致导致的问题。

结论、解决方案及效果

在运行环境下,重新编译构建Redis镜像,即可解决该问题。

  1. 获取Redis官方镜像的dockerfile。

    git clone https://github.com/docker-library/redis.git

  2. 进入对应版本的dockerfile目录。

    cd redis

  3. 准备构建5.0版本的Redis镜像。

    cd 5.0

  4. 构建镜像。

    docker build -t redis:5.0 .

  5. 运行redis:5.0镜像,查看控制台输出,确认Redis成功启动。

    docker run -it --rm redis:5.0