Apple 自己给「在 Mac 上跑 Docker」的答案
container 是 Apple 出的一个命令行工具,在 macOS 上运行 Linux 容器,用 Swift 写成,专为 Apple 芯片打造。表面上它很像 Docker CLI:拉镜像、跑起来、推回 registry。但底层它下了一个和此前所有 Mac 容器工具都不同的赌注,而这个赌注就是它的全部故事。
唯一真正重要的架构决定
Docker Desktop、Colima、OrbStack 这些工具形状都一样:Mac 上启一个 Linux 虚拟机,你跑的每个容器都活在这个共享 VM 里、共用一个 Linux 内核。container 反过来,给每个容器分配它自己的轻量虚拟机,底层建在 Apple 的 Containerization Swift 包和系统的 Virtualization 框架上。
这听起来更重,而它确实被设计成更重一点,目的是更好推理。每个工作负载拿到的是 VM 层级的真实隔离边界,而不是某个被其它一切也在碰的内核里的一个 namespace。对任何担心过容器逃逸、共享宿主机风险的人,这是个明显更强的默认值。代价是:这个模型只在 VM 启动足够便宜的地方才说得通,而这正是 Apple 芯片加一个精简 guest 所调优的场景。
它消费也产出 OCI 兼容镜像,所以这不是围墙花园。你从 Docker Hub 或任何标准 registry 拉镜像,自己构建的镜像推回同样的地方,也能在任何别的 OCI 环境里跑。
跑它你到底需要什么
这是营销话术一笔带过、而 issue 区在大声喊的部分:container 面向 macOS 26。维护者明说,无法在 macOS 26 上复现的问题他们通常不会处理,而且你需要一台 Apple 芯片的 Mac。没有 Intel 版本,没有 Linux 或 Windows 移植。它就是一个「Apple 芯片 + macOS 26」的工具,没有余地。
安装
从 GitHub releases 页 下载已签名的安装包,打开它,授权把文件装到 /usr/local。然后启动后台服务:
container system start
之后升级时,Apple 给的是一个辅助脚本,而不是包管理器:
container system stop
/usr/local/bin/update-container.sh
卸载时保留还是删除数据取决于参数(-k 保留,-d 删除):
/usr/local/bin/uninstall-container.sh -k
README 里没有 brew install 路径;已签名的安装包是官方支持的方式。
第一次运行
命令面跟 Docker 贴得够近,肌肉记忆能直接迁移:
container system start
container run --rm docker.io/library/alpine echo "hello from a VM"
仓库里的向导教程会带你构建、运行、发布一个小型 web server 镜像,这是端到端确认环境是否就绪的最快方式。
issue 区才是它真正值钱的地方
README 是一页「下载即用」。讨论最热的 open issue 才是真实边界所在,截至 2026-06 有两个最突出:
- 旧版 macOS 上出站网络是坏的。 讨论最热的那个帖子报告:在 macOS Sequoia 上,容器能解析 DNS,却实际连不上互联网。这正是「只支持 macOS 26」政策的实际后果:往回退一个大版本,核心网络就悄悄失效。别把 macOS 要求当成建议。
- 私有 registry 认证很糙。 一个长帖记录
container image pull在已成功登录后,对 Azure Container Registry 仍返回 401。如果你的镜像放在云 registry 而非 Docker Hub,先测认证再围着它搭工作流。
两者都不致命,但都会重置预期。这是一个年轻的 1.0,截至 2026-06 有 294 个 open issue,不是一个磨了十年的 daemon。
关于版本的一点说明
README 的项目状态文字仍在警告:稳定性只在补丁版本之间保证,1.0.0 之前可能出现破坏性变更。这段文字现在已落后于 tag:container 在 2026 年 6 月切了 1.0.0。把那段状态说明当成历史性的谨慎、而非当前状态来读,真实节奏看 releases 页。
container 与其它 Mac 方案的对比
| apple/container | Docker Desktop | Colima | Lima | |
|---|---|---|---|---|
| Stars | 27,983 | 闭源应用 | 29,219 | 21,204 |
| 隔离 | 每容器一个 VM | 共享 Linux VM | 共享 Linux VM | 共享 Linux VM |
| 许可 | Apache-2.0 | 闭源,大型组织付费 | MIT | Apache-2.0 |
| 平台 | macOS 26,Apple 芯片 | macOS、Windows、Linux | macOS、Linux | macOS、Linux |
| 最擅长 | 新 Mac 上的逐工作负载隔离 | 跨平台团队默认值 | 免费的 Docker 兼容 CLI | 可脚本化的 Linux VM |
计数取自 GitHub,截至 2026 年 6 月。Colima 和 Lima 是开源、免费的对照点,两者都跑常规的共享 VM 模型,且 Intel 与 Apple 芯片通吃。Docker Desktop 仍是跨平台默认值,也是混合团队的稳妥选择,大型公司需付费许可。OrbStack 是个快速的闭源 Mac 应用,没有可测量的公开仓库。container 在隔离模型上是异类,在运行要求上最严格。
它适合什么,不适合什么
如果你在较新的 Apple 芯片 Mac 上开发、跑着 macOS 26、又想要原生且快速的逐容器隔离,还不想碰 Docker Desktop 的许可问题,那就上 container。它能嵌进现有的 OCI 工作流,所以采用它不会让你的镜像被困住。
去别处看看,如果你需要一个工具横跨 macOS、Windows、Linux;如果你的团队没有统一在 macOS 26;或者你今天就依赖一套成熟的多容器编排方案和广泛的第三方工具链。那些目前还是 Docker Desktop 的地盘。
相关
想看 GitHub 上还有什么在往上爬,见每日趋势速报和周报。如果你在同一台 Mac 上本地跑语言模型,Ollama 是基于容器的开发环境常见的搭档。
FAQ
apple/container 能取代 Docker 吗? 在受支持的 Mac 上做本地开发,可以。它讲 OCI,用的是同样的镜像和 registry。但它取代不了 Docker Desktop 的跨平台覆盖,也取代不了它的编排生态。
我能在 Intel Mac 或旧版 macOS 上跑吗? 不能。它要求 Apple 芯片、面向 macOS 26;在旧版 macOS 上,出站网络是已报告的失效项之一。
它免费吗? 免费,Apache-2.0 许可,开源。
为什么每个容器一个 VM? 为了更强的隔离。每个容器拿到一个真实的 VM 边界,而不是和其它所有容器共用一个内核,这个取舍被 Apple 芯片做得足够便宜、因而实用。