树莓派使用docker-compose运行Redis Insights报exec format错误如何解决
问题根因
standard_init_linux.go抛出exec format error错误的核心原因是架构不匹配:树莓派2B为armv7架构,你使用的redislabs/redisinsight:1.10.1镜像仅提供amd64架构版本,未适配arm架构,无法直接在arm设备上运行。
可行解决方案(无需修改指定镜像及源码)
可以通过qemu-user-static实现跨架构指令转译,在宿主机层面完成amd64指令到armv7指令的动态转换,直接运行原有amd64架构镜像,操作步骤如下:
- 首先在树莓派Ubuntu系统中安装qemu相关依赖
sudo apt update && sudo apt install -y qemu-user-static binfmt-support
- 向Docker注册跨架构执行解释器
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- 直接使用原有docker-compose配置启动容器即可,不需要对镜像、源码或者docker-compose配置做任何修改。
方案说明
该方案在系统层面对指令做实时转译,完全不需要改动镜像内部的任何内容,完全符合你不修改指定镜像及源码的要求。由于Redis Insights属于轻量管理工具,转译带来的性能损耗在树莓派2B上几乎感知不到,不会影响正常使用。
内容的提问来源于stack exchange,提问作者g g
相关产品推荐
相关产品推荐

