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

感觉 M1 Mac 的 Docker 问题有点大

  •  
  •   dingwen07 · 2021-11-24 07:14:05 +08:00 · 7247 次点击
    这是一个创建于 1096 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近尝试 Docker ,试着构建官方教程里的一个 Node.js 的项目,构建错误之后去搜索,确实有人是 M1 遇到了同样的问题,但是看着 GitHub Issue 里的解决方案似乎都不行,几个月了。最终是加上 --platform linux/amd64 强制用 x86 才构建成功。

    之后构建自己写的 Dockerfile ,因为需要在 x86 平台运行直接选的就是 amd64 ,但 cargo install 还是失败了。

    其实主要就是构建镜像,拉取镜像来跑到是没遇到过什么问题。

    也不知道是我自己不会用还是 M1 Mac 的问题了。

    34 条回复    2021-11-25 11:07:22 +08:00
    ampedee
        1
    ampedee  
       2021-11-24 08:14:52 +08:00 via iPhone
    docker 客户端本质上是开了一个 qemu 虚拟机来转换成 x86 ,所以运行效率很低。
    个人感觉虚拟机有一定概率存在兼容问题,因为我在帮测试同学排查问题时,遇到过无法运行 gitlab 镜像结果发现是 qemu 报错。遇到问题时基本很难解决
    tulongtou
        2
    tulongtou  
       2021-11-24 08:18:55 +08:00
    docker 就不是给 Mac 用的东西,非要在 Mac 上用,肯定达不到 Linux 那么好
    petercui
        3
    petercui  
       2021-11-24 08:40:58 +08:00
    @tulongtou 并不是,在 intel 芯片的 MacBook 上同 linux 版本并没有什么明显的区别,还是因为 arm 版本的 docker 有问题。
    hahaFck
        4
    hahaFck  
       2021-11-24 08:44:39 +08:00
    我去,看的我都想取消订单了。
    6IbA2bj5ip3tK49j
        5
    6IbA2bj5ip3tK49j  
       2021-11-24 08:49:56 +08:00 via iPhone
    @petercui intel mac 上的 docker 是跑在 x86 的 linux vm 上的。
    问题的核心是:
    1.各个镜像对 arm linux 的支持问题。
    2.在 m1 跑 x86 虚拟机的问题。
    putin541
        6
    putin541  
       2021-11-24 09:01:09 +08:00
    已放弃 docker on mac ,有很多自用的 image 需要重新 build aarch64 版本的,从下到上 build 过来,如果其中一个不支持就 gg 了。。。
    dejavuwind
        7
    dejavuwind  
       2021-11-24 09:03:32 +08:00
    虚拟机 arm ubuntu 跑 docker 呢?能绕过这个问题吗?
    Mindzy
        8
    Mindzy  
       2021-11-24 09:15:42 +08:00
    现在 docker 还强制需要 rosetta 2 直接劝退,直接远程到其他机器上搞了
    jorneyr
        9
    jorneyr  
       2021-11-24 09:19:08 +08:00
    M1 Pro 加 16G 内存要 3000 ,为了用 Mac 同时不影响开发,把这 3000 买个普通主机跑 Linux ,只买乞丐版,哈哈哈,机智吧。
    tulongtou
        10
    tulongtou  
       2021-11-24 09:21:17 +08:00
    docker 存在的意义不是在于自动编排、自动部署、自动扩容么,为什么现在都喜欢在 Mac 上跑 docker ,实在是不理解。
    LinShiG0ng
        11
    LinShiG0ng  
       2021-11-24 09:29:49 +08:00
    感觉 M1 兼容问题好严重啊,以后我这 18 款的 mac 退役了可怎么办。。。。
    ShadowPower
        12
    ShadowPower  
       2021-11-24 09:39:02 +08:00   ❤️ 1
    @LinShiG0ng 用 Windows 笔记本,我已经半年多没有用 macOS 了
    willygeek007
        13
    willygeek007  
       2021-11-24 09:40:08 +08:00
    docker 生产环境大部分只适配 x86 ,arm 的话较少。楼主估计是想在本地用 docker 跑开发环境,有其存在的合理性。建议买个云服务在 x86 的 Linux 上玩耍,少一些坑
    ShadowPower
        14
    ShadowPower  
       2021-11-24 09:48:31 +08:00   ❤️ 1
    @LinShiG0ng M1 Mac 小毛病挺多的,不光是兼容性的问题,用来干活各种糟心……
    而 Windows 笔记本反而问题少很多,相比起来要更可靠一些。
    M1 MBP 的优势完全没有办法抵消它的劣势,除非是用来开会一整天。
    yangzzzzzzzt1
        15
    yangzzzzzzzt1  
       2021-11-24 10:13:17 +08:00
    同感,所以手上的 Intel Mac 退役后真不知道买什么
    @ShadowPower
    @LinShiG0ng
    yuancoder
        16
    yuancoder  
       2021-11-24 10:36:49 +08:00
    买个小主机装上 linux ,再跑 docker
    lancelock
        17
    lancelock  
       2021-11-24 10:47:07 +08:00
    不如买个云服务器,在上面跑 docker 呗,现在也便宜。我是不在本机上跑 docker 的
    DearMark
        18
    DearMark  
       2021-11-24 10:52:55 +08:00   ❤️ 1
    Windows 11 表示: 小兄弟,开发者生态了解一下。
    felixcode
        19
    felixcode  
       2021-11-24 10:58:18 +08:00   ❤️ 1
    所以,Windows 一个劲的集成 WSL 不是没有原因的,涉及到开发环境的时候只能不断提升操作系统自身的兼容性,而不是强迫开发者另起一套架构,否则坑是填不完的。

    要是远程都能解决问题的话,都买上网本就够了。
    makelove
        20
    makelove  
       2021-11-24 11:03:20 +08:00
    @DearMark Windows 还不是要虚拟机?我大 Linux 才是最原生开发者生态
    muntoya
        21
    muntoya  
       2021-11-24 11:11:21 +08:00
    @yangzzzzzzzt1 #15 手上有 intel mac 做主力,m1 mac mini 娱乐和做兼容测试用。原先就感觉开发相关的兼容性至少得 3-5 年解决,等 arm linux 和 docker 都优化两三年再说吧,arm 平台的镜像也得等着慢慢发展。
    zr86
        22
    zr86  
       2021-11-24 11:14:51 +08:00
    两万多 mac 都买了, 再买个 2000 左右的小主机很难吗
    luzhh
        23
    luzhh  
       2021-11-24 11:31:03 +08:00
    这也是我今年选择入手低价 16 寸 intel 版本 mbp 的原因,平时也会用到 docker 这些,主要是图个搭建环境方便,现在系统也不准备更新,Catalina 养老。
    1002xin
        24
    1002xin  
       2021-11-24 11:31:44 +08:00
    @ShadowPower 看了下我手上用了一年的 M1 ,再回头看看丢在家吃灰多年的 Windows 机器,竟无言以对
    TreeZero
        25
    TreeZero  
       2021-11-24 11:36:22 +08:00
    @zr86 还真打算收个 18 年的 mini 玩玩
    Badlion
        26
    Badlion  
       2021-11-24 11:44:27 +08:00
    在 mac 上跑 docker ,就算是 x86 ,也是姿势不正确
    dingwen07
        27
    dingwen07  
    OP
       2021-11-24 12:29:12 +08:00
    @felixcode #19 采用 WSL 2 作为底层的 Docker Desktop 确实要比 Mac 上的好很多,除了兼容性更好以外,它的内存占用也是动态的,不会像 Mac 版那样一下子就把设置里分配的内存大小全部给占用掉。

    还有一个问题,官方给的 Mac 磁盘空间释放的 Docker 镜像( docker/desktop-reclaim-space )在 M1 上是跑不起来的,也就是说现在要释放掉已经删除的 Docker 容器和镜像的空间,就必须要做一个磁盘镜像重置,会丢失所有本地的容器和镜像。
    xuanbg
        28
    xuanbg  
       2021-11-24 14:27:00 +08:00
    M1 上面还是暂时放弃 Docker 吧,坑太多了。
    hronro
        29
    hronro  
       2021-11-24 19:39:21 +08:00
    @petercui #3 差别大了,性能差好多,特别是 IO 性能
    ohiu
        30
    ohiu  
       2021-11-24 20:13:26 +08:00 via iPhone
    已经放弃 M1 转回 intel 了 看以后有没有改善吧
    aec4d
        31
    aec4d  
       2021-11-24 21:29:49 +08:00
    再花几千块配一台台式机,Exsi 安装 linux 和 windows ,docker 是 CS 系统,将 docker server 运行在 linux 上面,本机连远程 docker 就可以了,export DOCKER_HOST=tcp://xxx:2375
    petercui
        32
    petercui  
       2021-11-25 08:49:19 +08:00
    @hronro 问题是 macOS 上都是开发人员自己随便启动起来用用而已,性能差再多又能怎么样呢?最终跑在服务器上的是 linux 就可以了呗。

    话说不会有人真拿自己的个人电脑做服务器吧,太 low 了也。
    hronro
        33
    hronro  
       2021-11-25 10:30:41 +08:00
    @petercui #32

    你开心就好。

    Linux 上导入数据花几分钟,macOS 上导入数据要一天,你觉得能接受那就什么都 OK 。
    petercui
        34
    petercui  
       2021-11-25 11:07:22 +08:00
    @hronro 我当然不能接受,但我依然认为 OK ,因为我从不在自己电脑上做你所谓的这么耗时的“导入数据”操作,我会找台服务器去做。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2937 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:44 · PVG 20:44 · LAX 04:44 · JFK 07:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.