dcoker buildx 实在太猛了

BeautifulSoap · 6 天前 · 621 次点击

自建 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 镜像只要几十秒) 原来是这么回事。。。

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