开源项目
apple/container avatar
apple/container

apple/container:在 Apple 芯片 Mac 上把 Linux 容器跑进轻量虚拟机

一种在 Mac 上使用轻量级虚拟机创建和运行 Linux 容器的工具。它是用 Swift 编写的,并针对 Apple 芯片进行了优化。

49,949 个 Star1,789 个 ForkSwiftApache-2.0

秒懂

它是什么?
苹果开源的 container 工具用 Swift 编写,面向 Apple 芯片,将 OCI 镜像作为轻量虚拟机运行。本文拆解它的安装、使用、限制与替代方案。
适合谁用?
适合在 Apple 芯片 Mac 上开发、测试或运行 Linux 容器,且愿意绑定 macOS 26 的开发者。不适合需要支持旧版 macOS 或追求容器与宿主机共享内核性能的场景。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 Swift(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它解决的问题:macOS 上的 Linux 容器不是原生体验

在 Mac 上运行 Linux 容器,传统上依赖 Docker Desktop 或 colima 这类工具,它们通常通过虚拟机管理器创建 Linux 虚拟机,再在 VM 内部运行容器。apple/container 换了一条路:它直接创建轻量虚拟机来运行容器,而不是在虚拟机里再套一层容器运行时。它的定位很明确,只支持 Apple 芯片,只支持 macOS 26,而且它消费和产生 OCI 兼容镜像,这意味着你可以从标准 registry 拉取镜像,也可以把构建的镜像推送到任何 OCI 兼容的仓库。

工作机制:从 OCI 镜像到轻量 VM

根据 README 的描述,container 使用 Swift 编写,并依赖 apple/containerization 这个 Swift 包来处理底层的容器、镜像和进程管理。它的核心思路是:每个容器都是一个轻量虚拟机,而不是宿主机上的一个隔离进程。这种设计的好处是隔离性更强,因为每个 VM 有独立的内核,但代价是启动和运行的开销比传统容器大。文档提到它利用了 macOS 26 在虚拟化和网络方面的新特性,这解释了为什么它不支持旧版本。你不需要手动创建 VM,container 会自动处理镜像拉取、VM 启动和容器运行。

安装与启动:三步走,但绑定系统版本

安装路径很直白。从 GitHub release 页面下载签名安装包,双击安装,输入管理员密码,文件会放到 /usr/local 下。然后启动系统服务:container system start。之后就能跑第一个容器:container run --rm alpine echo hello。这个命令会拉取 alpine 镜像,在一个轻量 Linux VM 里运行 echo hello,容器退出后自动删除。升级和降级都有对应脚本,升级用 /usr/local/bin/update-container.sh,降级先用 uninstall-container.sh -k 保留数据,再指定版本号安装。卸载也有两个选项,-d 删除所有用户数据,-k 保留数据以便日后重装。

真正的限制:macOS 26 是硬门槛

最明显的限制是它只支持 macOS 26。README 明确说,不支持旧版本,而且维护者通常不会处理无法在 macOS 26 上复现的问题。这意味着如果你还在用 macOS 15 或更早,这个工具对你毫无用处。另一个限制是稳定性承诺:项目仍处于活跃开发阶段,稳定性只在补丁版本之间保证,比如 0.1.1 到 0.1.2,次要版本可能包含破坏性变更。这与你常见的容器工具不同,Docker 或 colima 的版本升级通常不会让你担心 API 变化。如果你需要长期稳定的环境,这一点需要认真考虑。

替代方案:colima 与 Docker Desktop 的差异

最常见的替代是 colima,它也是命令行工具,但采用不同的架构:它在 macOS 上创建一个 Linux 虚拟机,然后在 VM 内运行 Docker 引擎,容器共享 VM 的内核。colima 不依赖 macOS 26,支持更广泛的 macOS 版本,而且与 Docker CLI 完全兼容。Docker Desktop 则提供完整的图形界面和 Docker 生态集成,但它是商业软件,对大型企业有许可费用。container 的独特之处在于它把容器和 VM 合二为一,每个容器就是 VM,这比 colima 的 VM 内多容器模式更接近传统虚拟机的隔离级别。但这也意味着它的性能开销可能更高,因为每个容器都需要启动一个 VM。

维护与升级成本:脚本化但依赖系统服务

升级和降级都提供了脚本,但你需要先停止现有服务:container system stop。升级脚本会处理安装包,降级则要求先卸载再安装指定版本。这种设计避免了直接覆盖安装可能导致的冲突,但也意味着每次版本变更都需要重启服务。用户数据保留与否由 -k 和 -d 标志控制,这给了你灵活性,但如果你忘记备份,-d 会直接删除所有数据。项目采用 Apache-2.0 许可证,这对商业使用友好,但如果你要修改源码并重新分发,需要注意许可证的具体条款,这里不构成法律建议。

谁该用,谁该避开

如果你是 Apple 芯片 Mac 的开发者,主要工作在 Linux 容器上,并且愿意升级到 macOS 26,那么 container 值得一试。它的命令简洁,OCI 兼容性意味着你可以从现有 registry 拉取镜像。但如果你需要旧 macOS 支持,或者你的团队依赖 Docker 的特定功能,比如 docker-compose 的复杂网络模式,那么 colima 或 Docker Desktop 可能更合适。另外,如果你的项目要求容器启动速度接近原生,container 的 VM 方案可能不是最佳选择,尽管文档没有提供性能数据,但每个容器一个 VM 的设计直觉上比共享内核的容器运行时更重。在采用前,建议先跑一遍教程中的完整示例,验证你的镜像能否正常工作。

编辑结论

适合在 Apple 芯片 Mac 上开发、测试或运行 Linux 容器,且愿意绑定 macOS 26 的开发者。不适合需要支持旧版 macOS 或追求容器与宿主机共享内核性能的场景。采用前先确认你的 Mac 是 Apple 芯片,并已升级到 macOS 26,因为项目明确不支持旧版本。验证你的工作流是否依赖 Docker 的特定功能,例如复杂的网络配置或 GPU 直通,这些在 container 的文档中未明确提及。若你更看重与现有 Docker 生态的兼容性,应优先评估 colima 或 Docker Desktop 的 Apple 芯片版本。最终判断:container 是一个设计干净、专注于 Apple 平台的原生工具,但它的适用边界清晰,不适合作为通用容器运行时。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记