V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
programV2
V2EX  ›  macOS

V 友们,请问如何在 arm 架构的 m1 Mac 上运行 amd64 架构镜像🙏

  •  
  •   programV2 · 2021-09-30 14:04:37 +08:00 via iPhone · 3473 次点击
    这是一个创建于 1150 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过 m1 Mac 先安装虚拟机然后再跑 docker 来运行 amd64 架构镜像是否可行??

    17 条回复    2021-10-23 22:15:58 +08:00
    zhaol
        1
    zhaol  
       2021-09-30 14:14:50 +08:00
    同 m1,跑 gitlab-ee 的镜像时,遇到同样的问题,求解
    mxT52CRuqR6o5
        2
    mxT52CRuqR6o5  
       2021-09-30 14:17:05 +08:00
    不是说 m1 的 docker 有 qemu 去跑 x86/x86_64 吗(没用过不确定)
    BrettD
        3
    BrettD  
       2021-09-30 14:43:05 +08:00 via iPhone
    QEMU 软件转译 x86 效率很低,大概是二十年前奔腾 II 的性能
    daveh
        4
    daveh  
       2021-09-30 15:19:43 +08:00 via iPhone
    @BrettD 没那么夸张,我拿来跑 mysql workbench 都很顺畅,基本上感觉不到慢。
    BrettD
        5
    BrettD  
       2021-09-30 15:22:26 +08:00 via iPhone
    @daveh 我跑分测试过,大概是 400-500MHz 的水平
    shiny
        6
    shiny  
       2021-09-30 15:25:32 +08:00
    会比较慢,但是很多流行的镜像都提供了 arm64v8 架构,注意找找基本都有
    clrss
        7
    clrss  
       2021-09-30 15:29:13 +08:00
    @daveh 你确定你说的不是 Rosetta 2?
    byte10
        8
    byte10  
       2021-09-30 16:15:55 +08:00
    @BrettD M1 有虚拟接口不可能那么慢,哪怕纯计算模拟,只要上 jit 都不会慢,还是可以看看界面的。越狱后的 ipad M1 使用 UTM 跑 window (需要 jit 模式),打开那些 office 啥的 浏览器啥,看个电影啥都没问题。跑简单的项目完全不是问题。何况 macbook M1 还提供虚拟接口,性能完全不是问题。macbook 也有 utm,楼主可以看看
    mmtromsb456
        9
    mmtromsb456  
       2021-09-30 16:38:26 +08:00 via iPhone
    不需要自己创建虚拟机,Docker for Mac 本身创建的虚拟机(无论是否使用 Virtualization.Framework )都包含了 qemu-aarch64,所以直接 docker run --platform linux/amd64 指定运行容器使用的架构即可
    programV2
        10
    programV2  
    OP
       2021-09-30 19:53:02 +08:00 via iPhone
    @mmtromsb456
    谢谢大佬,请问这种方式创建的 docker 镜像 保存之后可以拷贝到其他 amd64 架构的服务器上运行吗?
    @mmtromsb456
    mmtromsb456
        11
    mmtromsb456  
       2021-09-30 21:17:49 +08:00
    @programV2 #10 可以的,也可以在本地 build 完后上传到仓库等等,和目前的已有镜像也是通用的,因为就是同一个东西.不过相对来说性能相对不太好,如果可以建议还是启用实验性功能 Virtualization.Framework
    marknote
        12
    marknote  
       2021-10-01 11:58:16 +08:00 via iPhone
    我发现比较靠谱的方式是
    用 qemu 或者 UTM 运行 amd64 的 Linux
    programV2
        13
    programV2  
    OP
       2021-10-22 14:38:23 +08:00 via iPhone
    @mmtromsb456 谢谢大佬,你说的这个 Virtualization.Framework 我 Google 了一下教程 , 好像还挺麻烦的 , 还需要自行 build : https://cloud.tencent.com/article/1778892 现在还有什么快捷的开启方式吗?

    @mmtromsb456 大佬,你是个楼上这位 v 友提及的 Virtualization.Framework 吗? 碰到了什么问题吗?
    @marknote
    @marknote
    programV2
        14
    programV2  
    OP
       2021-10-22 14:38:54 +08:00 via iPhone
    @marknote 手误: 是个》碰到
    programV2
        15
    programV2  
    OP
       2021-10-22 14:40:35 +08:00 via iPhone
    @marknote 手误: 是个》 尝试过
    mmtromsb456
        16
    mmtromsb456  
       2021-10-22 16:33:38 +08:00 via iPhone   ❤️ 1
    @programV2 Virtualization.Framework 框架是苹果内置在系统供开发者调用的框架,如果你要手动创建虚拟机来跑 docker,那得用 GitHub 上别人写的封装工具来调用。
    我之前提到是因为 Docker Desktop for Mac 本身适配了这个框架,就在他设置的 experimental 里面启用他就会把 qemu 后端迁移到 VF 框架
    marknote
        17
    marknote  
       2021-10-23 22:15:58 +08:00   ❤️ 1
    有 2 中方法:
    1. 直接安装 https://github.com/knazarov/homebrew-qemu-virgl
    效果很完美
    2.或者 UTM: https://mac.getutm.app
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2170 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:13 · PVG 00:13 · LAX 08:13 · JFK 11:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.