V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BeautifulSoap
V2EX  ›  分享发现

dcoker buildx 实在太猛了

  •  
  •   BeautifulSoap · 18 天前 · 1614 次点击

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

    5 条回复    2024-11-30 13:12:42 +08:00
    yinmin
        1
    yinmin  
       18 天前
    如果必须构建 arm64 镜像,性价比最高的是:买一个 arm64 开发板 git+docker build 。

    我用 300 多元买的 RK3399(双核 A72+四核 A53,4GB 内存)开发板 build 了你说的镜像,用时 130 多秒。
    Yadomin
        2
    Yadomin  
       18 天前 via Android
    go 代码直接 cross compile 啊,docker 这个走 qrmu-user 的
    BeautifulSoap
        3
    BeautifulSoap  
    OP
       18 天前
    @Yadomin 是的,后来公司项目直接 cross compile 了。只不过同样的问题同样出现在个人自建项目上比较奇妙,也是知道了为什么那么耗时间了
    BeautifulSoap
        4
    BeautifulSoap  
    OP
       18 天前
    @yinmin 其实真要 build 镜像的话我倒是有甲骨文的免费 arm 机子,主要还是每次 gitea action 动起来的时候必须同时 build arm 和 x86 两个平台的镜像。单独各自 build 还是挺麻烦的
    Akkuman
        5
    Akkuman  
       18 天前 via Android
    buildx 可以指定不同的远端,比如你可以配置成 x86 镜像指定在哪个远端 docker 服务上 build ,arm64 在哪个远端 docker 服务上 build ,配置好之后,命令相同,docker buildx build --platform xxxx ,就可以使用远端服务器 build ,这样你可以单独使用 arm64 机器来交叉编译 arm64 镜像
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5335 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 09:11 · PVG 17:11 · LAX 01:11 · JFK 04:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.