从 arm32v7 golang 映像构建 docker 映像时出现 exec 格式错误

我正在尝试构建一个 docker 映像arm32v7/golang:1.13.4-alpine,我是从 mac 成功构建的,但是当我尝试在 linux 机器上构建它时,它会抛出一个exec format error. 有很多问题,exec format error但找不到任何解决方案。我的 docker 文件如下所示


FROM arm32v7/golang:1.13.4-alpine as staging


RUN .....

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吗?有没有其他方法可以做到这一点?


慕码人2483693
浏览 392回答 2
2回答

12345678_0001

您需要通过 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

这是因为 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go