我正在尝试构建一个 docker 映像arm32v7/golang:1.13.4-alpine,我是从 mac 成功构建的,但是当我尝试在 linux 机器上构建它时,它会抛出一个exec format error. 有很多问题,exec format error但找不到任何解决方案。我的 docker 文件如下所示FROM arm32v7/golang:1.13.4-alpine as stagingRUN .....RUN .....RUN tar -czvf sbuild.tar.gz ./servicebuild............CMD tar -xzvf sbuild.tar.gz && ./servicebuild它基本上在 docker 文件中的第一个命令处失败并抛出错误 standard_init_linux.go:211: exec user process caused "exec format error"构建机器的架构 Linux x86_64 x86_64 x86_64 GNU/Linux上面的架构不支持arm32v7吗?有没有其他方法可以做到这一点?
2 回答

12345678_0001
TA贡献1802条经验 获得超5个赞
您需要通过 QEMU 和 binfmt_misc 启用不同的多架构容器的执行。
在最近的发行版中,这可以通过运行简单地完成:
apt-get install qemu-user-static
如果这对您不起作用,您可以执行:
docker run --rm --privileged multiarch/qemu-user-static --reset --persistent yes --credential yes
请注意,这可能会重新配置您拥有的任何现有 binfmt_misc 设置。有关更多详细信息,请参阅https://github.com/multiarch/qemu-user-static。
此信息可在一个 alpine 存储库 README 中找到,但据我所知不在 wiki 上:https ://gitlab.alpinelinux.org/alpine/docker-abuild#configure-multi-arch-support

烙印99
TA贡献1829条经验 获得超13个赞
这是因为 Docker for Mac 支持多 CPU 架构:https ://docs.docker.com/docker-for-mac/multi-arch/
据我所知,在使用本机 Docker 的 Linux 上你没有。尽管您可以通过安装额外的软件来做到这一点。例如查看这篇文章:https ://medium.com/@artur.klauser/building-multi-architecture-docker-images-with-buildx-27d80f7e2408
- 2 回答
- 0 关注
- 390 浏览
添加回答
举报
0/150
提交
取消