Apple Container实践
概述
苹果在2025年6月的全球开发者大会(WWDC)上发布了 Containerization 和 Container CLI,这是一个在 Mac 上以轻量级虚拟机方式创建和运行 Linux 容器的工具。这是开发者在 macOS 上运行 Linux 容器方式的重大转变,因为这一新的开源容器化框架消除了对 Docker 等第三方工具的需求。这个基于 Swift 的框架将在 macOS 26 中直接提供原生的 Linux 容器支持,标志着苹果以安全、性能和隐私为关注点进入了容器化领域
随着 2025 年 9 月 macOS 26 正式版的发布,Apple Container 已经正式成为 macOS 的一部分。本文将详细介绍 Apple Container 的一些实践,包括介绍、安装和使用方法
架构之VM-per-Container
Apple Container 采用 VM-per-Container 架构,这意味着每个容器都运行在一个独立的轻量级虚拟机中。这种设计提供了更高的隔离性和安全性,因为每个容器都有自己的内核和资源。与传统的容器化技术(如 Docker)共享主机内核不同,Apple Container 的这种架构可以防止容器之间的相互影响,提高了系统的稳定性和安全性。
Container 和底层的 Containerization 包集成了 macOS 的多个关键技术和框架:Virtualization 框架用于管理 Linux 虚拟机及其附加设备;vmnet 框架用于管理容器连接的虚拟网络;XPC 用于进程间通信;Launchd 用于服务管理;Keychain 服务用于访问注册表凭据;统一日志系统用于应用程序日志记录。
核心组件:
- container CLI - 用户交互的命令行界面
- container-apiserver - 后台服务进程,管理所有容器操作
- container-runtime-linux - 为每个容器启动的专用运行时助手
- vminitd - 在 VM 内部运行的最小化 init 系统,负责挂载文件系统、启动容器化进程
为了在没有标准库的环境中实现这一点,Apple 使用 Swift 的 Static Linux SDK 从 macOS 直接交叉编译静态 Linux 二进制文件,结合 musl 提供静态链接支持
优势
安全性
Apple 的 Containerization 框架为每个 Linux 容器提供了硬件级隔离,而不是依赖传统的基于命名空间的容器运行时。这从根本上解决了传统容器共享内核带来的安全隐患。
安全优势:
- VM 级隔离:每个容器都有独立的内核,消除了容器逃逸风险
- 最小化攻击面:使用最少的核心工具和动态库
- 无共享内核漏洞:不受宿主内核漏洞的影响
传统容器运行时在所有容器之间共享宿主内核,通过内核漏洞或容器逃逸漏洞创造了潜在的攻击向量。通过将每个容器放置在自己的轻量级 VM 中,Apple 消除了困扰容器安全十多年的共享攻击面
原生macOS集成
Container 不仅仅是另一个 Docker 克隆;它是重新构想在 Mac 上容器化可以是什么样子。与可能依赖更重的 Linux 虚拟机或跨平台兼容层的其他解决方案不同,container 是从零开始为 Apple Silicon 构建的。这是一个直接与 Apple 原生 Virtualization.framework 对话的 Swift 应用程序。
原生集成优势:
- 无需 Rosetta 2 模拟层:运行时本身不涉及仿真
- 深度系统集成:与 Xcode、Swift Package Manager 等工具自然配合
- 统一日志系统:所有诊断输出集成到 macOS 熟悉的日志系统中
- Keychain 集成:安全存储注册表凭据
性能
- 快速启动:秒级容器启动时间
- 资源高效:轻量级 VM 设计,最小化资源占用
- 优化的文件系统访问:使用 EXT4 块设备提供高性能访问
- 针对 Apple Silicon 优化:充分发挥 M 系列芯片的性能
兼容性
- Apache 2.0 许可:完全开源,鼓励社区贡献
- OCI 兼容:可以使用任何标准容器注册表的镜像
- 互操作性:构建的镜像可以在任何 OCI 兼容应用中运行
使用
环境说明
- 设备:MacBook Pro (M4, 2024)
- 操作系统:macOS 26.1 (Tahoe)