美文网首页
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的镜像

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

  • 构建Docker-Java基础镜像

    基于ubuntu构建基础镜像,下载ubuntu镜像 编写Dockerfile文件 构建docker镜像 基于基础包...

  • python基于Ubuntu下开发环境的准备

    利用Docker搭建Ubuntu环境 安装Docker 基于Dockerfile构建ubuntu镜像 构建镜像 查...

  • Dockerfile详解

    在使用Dockerfile构建镜像之前,我们先用一个案例来演示构建镜像的过程,首先我们使用ubuntu作为基础镜像...

  • Jenkins部署项目发布镜像报错failed to load

    报错信息: 解决方法: 构建镜像之前安装qemu-user-static为了让在x86上可以运行arm64的doc...

  • docker构建本地镜像

    使用commit命令构建本地镜像 将配置了nginx的Ubuntu构建为本地镜像 首先先创建一个容器并配置ngin...

  • Docker 实践指南(5)

    这节介绍手动建构镜像的方法镜像的构建以 Nginx 为例演示过程,基础镜像使用 Ubuntu 14.04。MySQ...

  • Dockerfile

    用Dockerfile来构建docker的image 1.FROM 指定基础镜像,比如FROM ubuntu:14...

  • Nginx+PHP7+FFMpeg的集成Docker镜像制作

    Dockerfile及其说明 来源镜像使用了Ubuntu,使用了supervisor来管理容器内进程。 构建方式:...

  • 2.docker --- 构建镜像

    一般来说,我们不是真正“创建”新镜像,而是基于一个已有的基础镜像, 如ubuntu等,构建新镜像而已。 1.创建D...

网友评论

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

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