跨平台的ARM 和 x86 Docker 镜像:汇编语言实验环境搭建

一、安装和配置 Docker

1.安装 Docker

官网链接:https://www.docker.com/

以Debian(Ubuntu)系统为例:

复制代码
#安装依赖包
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

#添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

#设置 Docker 的 APT 源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin

#启动 Docker 并设置开机自启
sudo systemctl enable --now docker

#验证 Docker 是否安装成功
sudo docker run hello-world

2.加速器配置(可选):

(1)创建或编辑 Docker 配置文件:

复制代码
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json

(2)添加加速器地址:

在 daemon.json 文件中添加以下内容(以毫秒镜像等为例):

复制代码
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "docker.xuanyuan.me",
        "https://docker.mirrors.ustc.edu.cn"
    ]
}

阿里云:登录阿里云容器镜像服务,进入"镜像加速器"页面,获取专属加速器地址。

(3)重启 Docker 服务:

复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

(4)验证加速是否生效

复制代码
docker pull hello-world

如果加速器配置正确,镜像拉取速度会明显提升。

3.安装 buildx 插件:

Buildx 支持为不同的平台和架构构建镜像,例如同时构建适用于 linux/amd64 和 linux/arm64 的镜像。19.03版本后的docker会自带buildx。

查看docker版本:docker --version

4.安装 QEMU

QEMU 是一个硬件虚拟化工具,用于模拟不同架构的 CPU。

运行以下命令安装 QEMU:

复制代码
docker run --privileged --rm tonistiigi/binfmt --install all

这会安装所有支持的 QEMU 架构,包括 ARM 和 x86。

二、构建镜像

1.编写 Dockerfile

复制代码
# 使用基础的 Linux 发行版镜像
FROM ubuntu:20.04

# 安装必要的工具
RUN apt-get update && \
    apt-get install -y tzdata && \
    ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    dpkg-reconfigure --frontend noninteractive tzdata

RUN apt-get install -y \
    build-essential \
    gcc \
    binutils \
    gdb \
    nasm \
    vim

# 设置工作目录
WORKDIR /workspace

# 指定容器启动时运行的命令
CMD ["/bin/bash"]

2.构建镜像

使用 docker buildx build 命令构建镜像,指定目标平台为 ARM 和 x86:

复制代码
docker buildx build --platform linux/arm64 -t asm-arm64:v1.0  .
docker buildx build --platform linux/amd64 -t asm-amd64:v1.0  .

# 多平台镜像:
docker buildx build --platform linux/amd64,linux/arm64 -t asm_arm64_amd64:v1.0 .

• --platform 参数指定了目标平台为 x86_64 和 ARM64。

• -t 参数为镜像设置标签。

3.运行镜像

复制代码
# 在 x86 架构上运行
docker run -it -v ~/asm/x86:/workspace --platform linux/amd64 asm-amd64:v1.0

# 在 ARM 架构上运行
docker run -it -v ~/asm/arm:/workspace --platform linux/arm64 asm-arm64:v1.0

• -it:以交互模式运行容器,进入容器内部

• -v ~/asm/arm:/workspace:将~/asm/arm目录挂载到容器的/workspace上

• 输入exit或Ctrl D键退出

4.运行容器

复制代码
# 查看容器
docker ps -a

# 启动容器
docker start <container_id>

# 连接到容器
docker exec -it <container_id> /bin/bash
相关推荐
wdfk_prog17 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥18 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
金刚猿18 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
忆~遂愿18 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘18 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
JH_Kong18 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿19 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
Fcy64819 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满19 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠19 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法