当前位置: 首页 > news >正文

在x86_64的ubuntu上运行arm架构的docker 用于开发嵌入式应用

一、镜像拉取

1、参考这个博客:https://luoxue.site/article/ubuntu-apt#066a4e87051f4cbd9a100c994d9c1c26 

找到对应的镜像也无法拉取,可能是因为没有正确的使用代理服务器。所以我找到了一个国内的docker镜像源:

https://docker.aityp.com/r/docker.io/arm64v8/ubuntu

image

 2、进入页面后在执行图中的命令

image

 

二、运行拉取好的ubuntu镜像

在 x86/amd64 架构的机器上运行 ARM64 架构的 Docker 镜像,需要通过 QEMU 模拟器实现架构兼容。以下是具体步骤,确保你能顺利在 amd64 环境中开发 ARM 架构程序:

  核心原理:通过在 Docker 中配置 QEMU 二进制翻译器,让 amd64 主机能够模拟 ARM64 指令集,从而运行 ARM 架构的容器。

1. 安装 QEMU 和相关工具

在宿主机(amd64)上安装 QEMU 模拟器和 Docker 多架构支持工具:
# Ubuntu/Debian 系统
sudo apt-get update
sudo apt-get install -y qemu-user-static binfmt-support# 加载 QEMU 二进制格式支持(关键步骤,让系统识别 ARM 可执行文件)
sudo update-binfmts --install arm64 /usr/bin/qemu-aarch64-static --magic '\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff'
  • qemu-user-static:提供静态编译的 QEMU 模拟器,支持在 amd64 上运行 ARM 程序。
  • binfmt-support:注册二进制格式,让系统自动用 QEMU 执行非本机架构的程序。

2. 配置 Docker 以支持多架构

需要将 QEMU 模拟器挂载到 Docker 镜像中,确保容器内能识别 ARM 指令。运行容器时添加 --platform linux/arm64/v8 显式指定架构,并挂载 QEMU 二进制文件:
docker run -it \--platform linux/arm64/v8 \  # 显式指定目标架构为 ARM64--name arm_ubuntu_dev \-v /usr/bin/qemu-aarch64-static:/usr/bin/qemu-aarch64-static \  # 挂载 QEMU 模拟器到容器内-p 宿主机端口:容器内端口 \  # 按需添加端口映射-v 宿主机目录:容器内目录 \  # 按需添加数据卷(如代码目录)arm64v8/ubuntu:24.04 \/bin/bash
 
  • 关键参数--platform linux/arm64/v8 告诉 Docker 强制使用 ARM64 架构,避免自动匹配宿主机架构。
  • 挂载 qemu-aarch64-static 后,容器内的 ARM 程序会自动通过 QEMU 翻译执行。

3. 验证配置是否成功

进入容器后,检查当前架构是否为 ARM64:
# 在容器内执行
uname -m
 
若输出 aarch64(ARM64 的标准名称),则表示配置成功,可正常开发 ARM 架构程序。

4. 开发 ARM 程序的注意事项

  • 编译工具链:在容器内安装 ARM 架构的编译工具(如 gcc-aarch64-linux-gnu),确保编译出的程序是 ARM64 架构。
    # 在容器内安装 ARM 编译工具(示例)apt-get update && apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
  • 性能影响:QEMU 模拟会有一定性能损耗,但足以满足开发和调试需求。
  • 持久化开发环境:可基于当前容器创建自定义镜像(docker commit),避免重复配置。
          通过 QEMU 模拟器和 Docker 的 --platform 参数,可在 amd64 主机上无缝运行 ARM64 容器,核心步骤是:
  1. 安装 QEMU 和二进制格式支持;
  2. 运行容器时挂载 QEMU 并指定 ARM64 架构。

这样就能在容器内开发、编译、调试 ARM 架构的程序,最终产物可直接部署到真实 ARM 设备上。

 

http://www.jsqmd.com/news/44653/

相关文章:

  • 详细介绍:设计模式详解
  • 无猫腻的到家按摩平台推荐,安心享受专业服务
  • 2025年冷库货架品牌综合评测与选购指南:十大实力厂家权威排名
  • 2025年CTU货架十大品牌综合评测与选购指南
  • 2025年CTU货架源头厂家top10:行业排名与选购指南
  • 36、CUBE 分组
  • CF980E The Number Games
  • 阿里云 Serverless 计算 10 月产品动态
  • 2025济南留学中介机构排名前十
  • 2025杭州最好的留学中介机构是哪家公司
  • 2025国内出国留学机构
  • 2025成都留学机构排名前十
  • 2025北京出国留学中介机构前十名有哪些
  • js 频繁点击切换两个按钮发送请求,显示最后一次发送请求的结果
  • 缝裤子 —— 北京八达岭附件 —— 河北怀来县城(张家口市)—— 2025年11月份
  • 2025年餐饮火锅底料批发厂家权威推荐榜单:袋装火锅底料/火锅底料/火锅底料牛油入境美国源头厂家精选
  • 如何通过Python SDK获取Collection中已存在的Doc
  • AI养蛊:让钓鱼邮件和反钓鱼邮件系统打一架
  • lasso
  • 当下采购管理系统开发公司哪家可靠
  • 质量好的工业吸尘器推荐:多场景适用品牌解析
  • 2025年11月岩心钻机供应商排行榜单精选
  • 工业吸尘器十大品牌推荐 2025年热门型号选购参考
  • 今年采购管理系统服务推荐榜
  • 2025年市场履带钻机供货厂家榜单Top5权威解析
  • 2025年岩心钻机供货商推荐排行榜单Top10
  • Openwrt-Ipv6设置(中继获取)
  • 今年采购管理系统开发公司推荐几家
  • 工厂用工业吸尘器选购指南与实用推荐
  • 2025年食品包装盒清废机制造厂权威推荐榜单:化妆品盒清废机/药盒清废机/礼盒自动清废机源头厂家精选