美文网首页
ubuntu上构建arm64的镜像

ubuntu上构建arm64的镜像

作者: 时彬斌 | 来源:发表于2020-09-10 20:48 被阅读0次

    中美摩擦升级,国产替代成为了一个绕不开的点,本文将会基于ubuntu16.04的为编译环境,来构建生成arm64版本的镜像文件:
    构建过程分为两部分:

    1. 编译环境准备,即安装qemu模拟arm64的环境:
    apt-get update && apt-get install -y --no-install-recommends qemu-user-static binfmt-support
    

    检查安装情况是否完整:

    $  cd /usr/bin/qemu-
    
    qemu-aarch64-static       qemu-or32-static
    qemu-alpha-static         qemu-ppc64abi32-static
    qemu-armeb-static         qemu-ppc64le-static
    qemu-arm-static           qemu-ppc64-static
    qemu-cris-static          qemu-ppc-static
    qemu-i386-static          qemu-s390x-static
    qemu-m68k-static          qemu-sh4eb-static
    qemu-microblazeel-static  qemu-sh4-static
    qemu-microblaze-static    qemu-sparc32plus-static
    qemu-mips64el-static      qemu-sparc64-static
    qemu-mips64-static        qemu-sparc-static
    qemu-mipsel-static        qemu-tilegx-static
    qemu-mipsn32el-static     qemu-unicore32-static
    qemu-mipsn32-static       qemu-x86_64-static
    qemu-mips-static
    

    如上所示代表安装成功,下面检查一下是否启用了相关的架构模拟,出现了下面第二行的warning代表是已经开启,到此编译环境的设置已经完成:

     $ update-binfmts --enable qemu-aarch64
    update-binfmts: warning: qemu-aarch64 already enabled in kernel.
    
    1. Dockerfile的编写:
    FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu
    FROM arm64v8/alpine:3.12
    COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin
    ENTRYPOINT ["/entrypoint.sh"]
    

    到这里我们的构建arm64架构下的镜像就完成了。
    当然上面的dockerfile是最简单的一种方式,将 qemu-aarch64-static 拷贝到你要生成的镜像里,下面提供了另外两种方式:

    
    #  也可以通过文件挂载的方式,将宿主机上的qemu-aarch64-static 拷贝到你的镜像里;
    cp /usr/bin/qemu-arm-static /your/working/dir
    # Dockerfile 里加上这句 
    COPY qemu-arm-static /usr/bin/qemu-arm-static
    
    # 还可以通过下载的方式搞到镜像里,这种方式需要你在编译的镜像里下载,再拷贝到自己的镜像里,Dockerfile如下:
    FROM golang:1.13.0 as builder
    WORKDIR /home
    RUN curl -SL https://github.com/balena-io/qemu/releases/download/v4.0.0%2Bbalena2/qemu-4.0.0.balena2-aarch64.tar.gz | tar zxvf - -C . && mv qemu-4.0.0+balena2-aarch64/qemu-aarch64-static . 
    
    FROM arm64v8/alpine:3.12
    COPY --from=builder /home/qemu-aarch64-static /usr/bin/qemu-aarch64-static
    ENTRYPOINT ["/entrypoint.sh"]
    

    相关文章

      网友评论

          本文标题:ubuntu上构建arm64的镜像

          本文链接:https://www.haomeiwen.com/subject/ttcmektx.html