[TOC]
本文介绍如何在x86主机上构建arm镜像
### **基于qemu**
下载arm64的镜像(注意,首先要删除同名的镜像)
```
$ docker pull --platform linux/arm64 tomcat:9.0.60-jdk8-openjdk
```
确认一下下载的镜像的架构为arm64
```
$ docker inspect tomcat:9.0.60-jdk8-openjdk
```
下载qemu镜像(分别用于向内核的binfmt_misc注册可执行文件,以及用于arm64指令翻译为x86指令)
```
$ docker pull multiarch/qemu-user-static:register
$ docker pull multiarch/qemu-user-static:x86_64-aarch64
```
运行register镜像,向内核的binfmt_misc进行注册:
```
$ docker run --rm --privileged multiarch/qemu-user-static:register --reset
```
接着,我们创建一个Dockerfile,内容如下:
```
FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu
FROM tomcat:9.0.60-jdk8-openjdk
COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin
# 以下为对镜像的修改
RUN apt-get install ansible
```
然后,执行如下命令进行构建
```
$ docker build -t ccse-backend-tomcat:9.0.60-p2-arm64 .
```
然后,你可以检查一下该镜像的架构:
```
$ docker inspect ccse-backend-tomcat:9.0.60-p2-arm64
```
以及进入到镜像里面查看架构:
```
$ docker run --rm ccse-backend-tomcat:9.0.60-p2-arm64 uname -m
WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested
aarch64
```
### **参考**
* https://silenceper.com/blog/202006/build-arm-image-on-x86_84/
- 安装
- 在线安装
- 离线安装
- 下载镜像
- 下载DockerHub镜像
- 下载Google镜像
- 阿里云镜像中心
- 下载ARM镜像
- 容器命名空间
- Linux命名空间概述
- 根据PID快速定位到容器
- 进入到容器的命名空间
- Dockerfile
- 基本语法
- 前台运行
- 镜像存储
- 本地存储
- Registry中的存储
- 如何判断两个镜像是否是同一个
- Registry
- Notification
- Auth
- 基本原理
- Token认证的设计
- API
- Pull镜像
- Push镜像
- Docker设置代理
- 日志
- 磁盘占用与清理
- Docker选项与K8S的Yaml
- 运维总结
- 常用命令
- DockerCompose
- 构建ARM版本
- 跨架构
- x86架构下构建arm64镜像
- Containerd
- ctr-crictl-nerdctl
- ctr
- Insecure-Registry
- Kata
- 构建OS镜像
- 进入到kata虚机