BeautifulSoap

dcoker buildx 实在太猛了

  •  
  •   BeautifulSoap · Nov 29, 2024 · 2955 views
    This topic created in 703 days ago, the information mentioned may be changed or developed.

    自建 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 replies  •  2024-11-30 13:12:42 +08:00
    yinmin
    yinmin
    Nov 29, 2024
    1
    如果必须构建 arm64 镜像,性价比最高的是:买一个 arm64 开发板 git+docker build 。

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