zhoudaiyu
V2EX  ›  问与答

用 buildx 在 X86 的服务器上构建 aarch64 的 Docker 镜像会有啥坑吗?

  •  
  •   zhoudaiyu · Sep 6, 2022 via iPhone · 2712 views
    This topic created in 1527 days ago, the information mentioned may be changed or developed.
    背景是我们之前所有的服务器都是 X86 架构的,但是最近搞了一些试水的 aarch64 的服务器,我们已经在上面装完了 k8s ,现在的问题就是我们之前做的镜像都是 x86 的( Java 和 Python ),现在要支持 aarch64 ,并且因为一些原因镜像构建还要在 x86 的服务器上跑。Java 我感觉还可以,换一下 arm64 的 Jdk 应该就行了,但是我们 Python 是编译安装的,需要在 arm 下重新编译。docker 官方支持的跨架构的方案是 buildx ,但不知道有没有啥问题?毕竟是实验支持。请问大家有啥思路吗?
    14 replies  •  2022-09-06 16:52:34 +08:00
    Jirajine
    Jirajine
    Sep 6, 2022
    1
    可以用 https://github.com/multiarch/qemu-user-static ,然后直接基于 arm 镜像构建。
    AllenHua
    AllenHua
    Sep 6, 2022 via iPhone
    2
    目前没发现什么坑,我构建的 amd64 和 arm64 都正常,N1 上正常运行。
    zhoudaiyu
    zhoudaiyu
    OP
    Sep 6, 2022 via iPhone
    3
    @Jirajine 感谢您,这个我也看过,我有点和 buildx 混了,我以为 buildx 就是依赖它
    @AllenHua 您是在镜像里编译的 C 的程序吗?
    Jirajine
    Jirajine
    Sep 6, 2022
    4
    @zhoudaiyu 应该是使用 buildx 构建多平台镜像之前也需要设置好 bin_fmt 。所以你用了这个之后可以用 buildx 构建多平台镜像也可以直接基于 arm 的镜像正常构建。
    ampedee
    ampedee
    Sep 6, 2022
    5
    没啥问题,我们部署过好几套产品了,不放心的话 C 不是也能交叉编译吗
    zhsj
    zhsj
    Sep 6, 2022 via Android
    6
    编译会很慢
    cutiechi
    cutiechi
    Sep 6, 2022
    7
    无坑,我司全部组件以及服务都要求支持 ARM ,已稳定使用两年
    Lattez
    Lattez
    Sep 6, 2022
    8
    我在自己 m1 上 buildx 编译 x86 的镜像,部署在服务器上没啥问题,唯一的区别是镜像大小会比普通 x86 机器 build 出来的大一些
    AllenHua
    AllenHua
    Sep 6, 2022
    9
    @zhoudaiyu #3 PHP 和 NodeJS 都稳定的很,Java 也有,没有人报告问题。

    https://hub.docker.com/r/dko0/lsky-pro https://hub.docker.com/r/dko0/squoosh
    novolunt
    novolunt
    Sep 6, 2022
    10
    java/python 都是依赖 sdk 的,严格意义讲不算完全编译模式,也就是跟 cpu 弱相关,无非是 java 得统一用 open jdk
    docker buildx build --platform=linux/amd64,linux/arm64 .
    idblife
    idblife
    Sep 6, 2022
    11
    在用 arm 机器构建 x86 镜像,感觉良好
    xh3ccc
    xh3ccc
    Sep 6, 2022 via iPhone
    12
    我用 qemu-user binfmt 构建 aarch64 镜像与跑的容器(数据库实例),除了慢其它还好。
    zhoudaiyu
    zhoudaiyu
    OP
    Sep 6, 2022
    13
    @xh3ccc #12 我看了一下这个 qemu 的模拟器需要内核 4.8 以上才能跑,我们的 3.10 确实装不了,不知道大佬的内核是啥版本的
    xh3ccc
    xh3ccc
    Sep 6, 2022 via iPhone
    14
    @zhoudaiyu 源码编译的 qemu 6.1.0 版本,内核也是 3.10
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   923 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 21:08 · PVG 05:08 · LAX 13:08 · JFK 16:08
    ♥ Do have faith in what you're doing.