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

qemu 跨架构

跨架构:在不同架构机器上运行其他架构容器
使用qemu静态文件启动目标架构dockers。
注意:目标架构是哪个,就下载哪个文件
下载:https://github.com/multiarch/qemu-user-static/releases/tag/v7.2.0-1
https://blog.csdn.net/m0_53195006/article/details/129890780
https://blog.csdn.net/happyblreay/article/details/139743957
x86_64平台通过qemu-user-static 运行arm64的docker镜像:
1、下载目标架构的qemu
下载路径:link
https://github.com/multiarch/qemu-user-static/releases

wget https://github.com/multiarch/qemu-user-static/releases/download/v7.2.0-1/qemu-aarch64-static.tar.gz
#下载后需要解压
tar -xzf xxx.tar.gz

2、初始化binfmt

#初始化和重置binfmt
docker run --rm --privileged multiarch/qemu-user-static --reset 
#设置binfmt(可能会失败,原因未知,解决方式是手动mount qemu-aarch64-static到容器;)
docker run --rm --privileged multiarch/qemu-user-static -p yes

qemu-user-static结合binfmt_misc来实现arm架构的指令模拟(文末有详细介绍)
可以通过检查 /proc/sys/fs/binfmt_misc 下的内容来确认是否成功启用。

root@testhost1:/root>ls -al /proc/sys/fs/binfmt_misc
total 0
drwxr-xr-x 2 root root 0 May 21 15:11 .
dr-xr-xr-x 1 root root 0 May 21 23:11 ..
-rw-r--r-- 1 root root 0 Jun 17 14:58 qemu-aarch64

在安装并配置好 qemu-user-static 与 binfmt_misc 后,你就可以直接使用 Docker 运行 ARM64 的镜像了。这时,Docker 与 QEMU 联动,能够在你的 x86_64 机器上模拟 ARM64 架构。

3、拉取arm版本的镜像

docker pull arm64v8/ubuntu:20.04

4、运行arm容器
需要把qemu-aarch64-static映射到目标容器里
需要指定目标容器的platform

docker run -it --rm --platform linux/arm64 -v $(pwd)/qemu-aarch64-static:/usr/bin/qemu-aarch64-static arm64v8/ubuntu:20.04  uname -m
#ok
docker run --cpus 48 --shm-size 32G --gpus all --memory 500gb --privileged=true -v /nfs2:/nfs2 -p 8065:8888 -it --platform linux/arm64 -v $(pwd)/qemu-aarch64-static:/usr/bin/qemu-aarch64-static --name czc_arch_pytest python:3.10.14-bookworm /bin/bashdocker run --cpus 48 --shm-size 32G --gpus all --memory 500gb -it  \--privileged=true -v /nfs2:/nfs2 -p 8065:8888  \--platform linux/arm64 -v $(pwd)/qemu-aarch64-static:/usr/bin/qemu-aarch64-static \--name czc_arch_pytest python:3.10.14-bookworm /bin/bash

问题:网络一直限速,不知道是不是容器问题,更新下
apt update && apt upgrade

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux系统中内存和缓冲简介
  • 小实战项目-第二章2.1-IIC协议讲解? 什么是软件IIC 什么是硬件IIC 有什么区别如何编写代码--这章节主要讲解软件IIC,下一章节讲解硬件IIC协议
  • 哈夫曼树例题
  • Matlab R2022b使用Camera Calibrator工具箱张正友标定法进行相机标定附带标定前后对比代码
  • 论文翻译:Multi-step Jailbreaking Privacy Attacks on ChatGPT
  • 设计模式(四)
  • 掌握 Rust 中的 YAML 魔法:Serde_yaml 使用指南
  • 【前端开发】国际化开发工具i18n的使用教程
  • MySQL 数据库深度解析:安装、语法与高级查询实战
  • BMC解决方案丨服务器故障诊断与预测平台方案设计与实现
  • 计算机毕业设计选题推荐-医疗就诊平台-在线医疗问诊系统-Java/Python项目实战
  • 【Android】根据URI获取文件扩展名或MimeType
  • Android SurfaceFlinger——共享内存读写流程(五十五)
  • 探索微服务架构中的动态服务发现与调用:使用 Nacos 与 Spring Cloud OpenFeign 打造高效订单管理系统
  • 如何将 Parallels Desktop 许可证密钥移至新的 Mac?
  • 0基础学习移动端适配
  • Effective Java 笔记(一)
  • ES6--对象的扩展
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • MobX
  • Nacos系列:Nacos的Java SDK使用
  • PAT A1120
  • spring + angular 实现导出excel
  • SpringBoot几种定时任务的实现方式
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 初识 webpack
  • 从PHP迁移至Golang - 基础篇
  • 翻译:Hystrix - How To Use
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 区块链分支循环
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 突破自己的技术思维
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 异步
  • 译有关态射的一切
  • nb
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​渐进式Web应用PWA的未来
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #include到底该写在哪
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Forward) Music Player: From UI Proposal to Code
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (web自动化测试+python)1
  • (二)原生js案例之数码时钟计时
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • **PHP分步表单提交思路(分页表单提交)