首页 > linux, redis > docker 启动 redis 报 `undefined symbol: seccomp_version` 错误的解决办法

docker 启动 redis 报 `undefined symbol: seccomp_version` 错误的解决办法

2020年10月23日 发表评论 阅读评论

通过 docker 部署 redis,启动 docker 时需要依赖 containerd。其实跟 redis 关系不大,主要是 docker 依赖于 containerd。安装完成 docker 启动后可能会遇到如下错误:

缺少对应版本的 libseccomp, 有两种可能:

  • 系统没有安装 libseccomp
  • 系统安装的 libseccomp 版本不匹配(较低),建议使用 2.4.2

libseccomp 是什么?

libseccomp 是一个 C 语言开发的 Linux 内核系统调用过滤帮助库,很多容器项目都使用到它,比如 containerd、docker、runc 。

libseccomp 安装

因为 containerd 需要依赖的 libseccomp 较新,经过测试,v2.4.2 可以在成功运行,所以我们直接通过源代码来安装。

  • 下载源代码

  • 解压缩

  • 构建

  • 编译安装

  • 通过 whereis libseccomp查看安装目录

注意:如果以前使用系统包管理工具安装了低版本的 libseccomp,即使通过编译安装最新版本,还是会报错。

这是因为引用路径的优先级的缘故,其 containerd 还是使用了老版本,故需要先删除系统包管理安装的老版本,删除命令根据操作系统的类别而定,比如 Centos 可以使用 yum remove libseccomp。当安装了 v2.4.2 的 libseccomp 后, 我们再次运行 docker,报错信息消失,docker 服务启动成功。

分类: linux, redis 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.