1. 简介
ARM 镜像和 x86 镜像是为不同处理器架构设计的软件镜像。ARM(Advanced RISC Machine)架构和 x86 架构是两种主流的处理器指令集架构,它们在设计和性能特点上有所不同。以下是 ARM 镜像和 x86 镜像的一些主要区别:
-
处理器架构:
-
ARM 镜像:专为 ARM 处理器设计,这些处理器通常用于移动设备、嵌入式系统和一些服务器。ARM 架构以其低功耗和高效能而闻名。
-
x86 镜像:为 x86 处理器设计,这些处理器广泛应用于个人电脑和服务器。x86 架构包括 Intel 和 AMD 的处理器。
-
-
操作系统支持:
- 操作系统发行版通常会提供针对 ARM 和 x86 的不同版本。例如,Ubuntu、Debian 和 Fedora 都提供了 ARM 和 x86 版本的镜像。
-
软件兼容性:
- 软件通常需要为不同的架构编译。因此,为 ARM 架构编译的软件可能无法在 x86 系统上运行,反之亦然。不过,有一些技术(如虚拟化和容器化)可以在一定程度上桥接这种差异。
-
性能和功耗:
-
ARM 处理器通常在低功耗下提供良好的性能,适合电池供电的设备。
-
x86 处理器提供广泛的性能范围,从低功耗的 Atom 处理器到高性能的 Core i9 处理器。
-
-
生态系统:
-
x86 架构拥有更成熟的生态系统,特别是在桌面和服务器市场。
-
ARM 架构在移动和嵌入式市场拥有强大的生态系统,并且正在逐渐扩展到服务器和数据中心市场。
-
-
开发和部署:
-
开发人员可能需要为不同的架构准备不同的构建环境。
-
在部署应用程序时,需要确保选择的镜像与目标硬件架构兼容。
-
-
Docker 镜像:
- Docker 镜像可以为不同的架构标记不同的标签。例如,
ubuntu:latest
通常指的是 x86 架构的镜像,而arm64v8/ubuntu:latest
指的是 ARM 架构的镜像。
- Docker 镜像可以为不同的架构标记不同的标签。例如,
2. 拉取arm镜像
docker版本必须在19以上
1. Docker 配置
修改$HOME/.docker/config.json文件,加入如下配置开启:
bash
vim /root/.docker/config.json
{
"auth" : {},
"experimental": "enabled"
}
启用
bash
vim /etc/docker/daemon.json
{
"experimental": true
}
重启docker
bash
systemctl daemon-reload
systemctl restart docker
2. 安装并设置了 QEMU 用户态二进制格式解释器
bash
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
3. 拉取镜像
在dockerhub中搜索镜像,查看详情
- ARCH是表示架构
查看到有arm架构的镜像,在服务器中拉取
bash
docker pull --platform=arm64 redis:latest
3. 应用程序打包
- Dockerfile文件修改:FROM openjdk:11.0.14.1-jdk-buster改为
bash
FROM --platform=arm64 openjdk:11.0.14.1-jdk-buster
- build命令修改:末尾加上--platform=linux/arm64
bash
docker build -t "$(generate_image_id "$VERSION-$COMMIT")" . -f Dockerfile
--platform=linux/arm64
- 正常打包push
注:在arm架构系统中,不支持 . 或者一些指令开头的文件命令。