dcoker buildx 实在太猛了

36 天前
 BeautifulSoap

自建 gitea+runner 构建一个 x86 和 arm 的 docker 镜像 就这么简单的命令

docker buildx build --platform linux/amd64,linux/arm64 -t xxxxxxxxx:latest --push  .

Dockerfile 里跑了个最简单的编译命令

RUN go install tailscale.com/cmd/derper@${LATEST_VERSION}

提交后我的八核 cpu 服务器一副地狱绘图,然后就这么 100%占用着,一直编译了十几分钟才结束

https://imgur.com/a/5dbMtkl

突然想起来,公司项目在 Github Actions 上用 buildx 编辑多平台镜像,一直有个问题就是编译 arm 镜像的时候里面的编译工作要花至少 20 分钟(而 x86 镜像只要几十秒) 原来是这么回事。。。

1781 次点击
所在节点    分享发现
5 条回复
yinmin
36 天前
如果必须构建 arm64 镜像,性价比最高的是:买一个 arm64 开发板 git+docker build 。

我用 300 多元买的 RK3399(双核 A72+四核 A53,4GB 内存)开发板 build 了你说的镜像,用时 130 多秒。
Yadomin
36 天前
go 代码直接 cross compile 啊,docker 这个走 qrmu-user 的
BeautifulSoap
36 天前
@Yadomin 是的,后来公司项目直接 cross compile 了。只不过同样的问题同样出现在个人自建项目上比较奇妙,也是知道了为什么那么耗时间了
BeautifulSoap
36 天前
@yinmin 其实真要 build 镜像的话我倒是有甲骨文的免费 arm 机子,主要还是每次 gitea action 动起来的时候必须同时 build arm 和 x86 两个平台的镜像。单独各自 build 还是挺麻烦的
Akkuman
36 天前
buildx 可以指定不同的远端,比如你可以配置成 x86 镜像指定在哪个远端 docker 服务上 build ,arm64 在哪个远端 docker 服务上 build ,配置好之后,命令相同,docker buildx build --platform xxxx ,就可以使用远端服务器 build ,这样你可以单独使用 arm64 机器来交叉编译 arm64 镜像

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1093825

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX