登录
首页 >  Golang >  Go问答

构建Docker镜像时遇到从arm32v7的Golang镜像执行格式错误

来源:stackoverflow

时间:2024-03-03 22:48:28 353浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《构建Docker镜像时遇到从arm32v7的Golang镜像执行格式错误》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我正在尝试从 arm32v7/golang:1.13.4-alpine 构建一个 docker 映像,我已从 mac 成功构建该映像,但当我尝试在 linux 计算机上构建它时,它会抛出 exec 格式错误 。 关于 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 用户进程导致“exec 格式错误”

构建机器的架构 linux x86_64 x86_64 x86_64 gnu/linux

上述架构不支持arm32v7吗?还有其他方法可以做到这一点吗?


解决方案


您需要启用 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

此信息可在一个高山存储库自述文件中找到,但据我所知,在 wiki 上没有:https://gitlab.alpinelinux.org/alpine/docker-abuild#configure-multi-arch-support

今天关于《构建Docker镜像时遇到从arm32v7的Golang镜像执行格式错误》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>