搭载 Apple M1 芯片的新款 Mac 凭借性能方面的优异表现和极具竞争优势的价格吸引了大量开发者,其中的功劳当属这款基于 ARM 架构的 Apple M1 芯片。然而,也正是这款芯片劝退了部分有特定软件需求的开发者。
如果你在日常的工作或开发中对 Docker 有重度依赖,并将 Mac 作为主力机,目前建议谨慎购买 ARM 版本的 Mac。因为有开发者反馈 Docker 无法在搭载 Apple Silicon 的设备上启动。不过从这名开发者的反馈来看,他所使用的设备搭载的并不是 Apple M1 芯片,而是更早的 A12X。
但这并不影响目前的结果,因为 Docker 现在确实无法在搭载 Apple M1 芯片的 Mac 上运行。虽然 macOS 具有虚拟化功能,Apple M1 芯片也支持虚拟化——但这项支持尚未移植至 Docker。一名开发者指出,从 Apple 文档来看,使用者可能无法在同一进程中同时进行仿真与虚拟化 (emulation and virtualization)。具体来说就是使用者可在 M1 芯片上运行 x86 架构的 Mac 应用程序,但与此同时很可能无法访问 x86 架构的 Docker 镜像。
就 Apple M1 芯片和 Docker 的兼容性问题,Docker Desktop 负责人近日对此进行了回应。他指出,虽然苹果发布了 Rosetta 2 来帮助将应用程序转移到新的 M1 芯片上,但这对 Docker Desktop 没有什么帮助。因为在 Docker Desktop 客户端之下运行的是一个虚拟机,若要在苹果的新芯片上实现同样的功能,Docker Desktop 需要迁移至 hypervisor framework。此外还要实现所有的管道来提供 Docker Desktop 的核心体验,以便像现在一样在终端上运行docker run
命令。
除了针对 Apple M1 芯片进行适配,Docker Desktop 对上游也存在技术依赖,需要在新版本 GA 之前进行修改。为了保证版本质量,Docker 团队要使用合适的 工具 以支持可重复、可靠的测试,需要完成包括为 M1 芯片设置 CI 的工作。此外,同样重要的是 Docker 要确保docker build
的体验,因为他们知道开发者对多架构构建有更多的需求,目前 buildx 已支持多架构构建,Docker 团队需要研究如何将此引入并作为此版本的一部分,以简化一切操作。