WWDC Quick Look 💓 By SwiftGGTeam
Discover container machines

Discover container machines

观看原视频

Highlight

Container machine 是 Containerization 框架的新功能,在 macOS 上提供轻量级、持久化的 Linux 环境,支持自动用户映射、文件系统共享和无缝工作流集成。

核心内容

在 macOS 上开发 Linux 服务端应用时,开发者一直面临一个尴尬的选择。

传统虚拟机(VM)提供完整的 Linux 环境和持久化状态,但启动慢、资源占用高。Docker 等容器方案轻量快速,但每次启动都是全新环境,修改不持久保存。更重要的是,在这两种方案和 macOS 之间切换时,总需要处理文件同步、用户权限、路径映射等问题,打断了开发心流。

Apple 在 WWDC 25 开源的 Containerization 框架提供了一个新思路——用轻量级虚拟机实现容器级别的隔离和启动速度。在此基础上,WWDC 26 推出的 Container machine 结合了容器的轻量和虚拟机的持久性,同时通过深度 macOS 集成解决了平台切换的摩擦。

Container machine 的设计围绕四个原则:轻量快速、易于管理、状态持久、原生集成。它使用与容器相同的 OCI 镜像格式,可以瞬间启动并保持修改。自动用户映射让 Linux 环境中的用户名与 macOS 一致,文件系统自动共享,当前工作目录自动对应。这些设计让 Linux 环境感觉像是 macOS 的自然延伸。

详细内容

Container machine 建立在 Containerization 框架之上。每个 Container machine 运行在独立的轻量级虚拟机中,使用标准的 OCI 镜像,是 container 工具的一级特性。

基本命令(4:41

container machine 命令提供概览,展示可执行的操作:

container machine

关键点:

  • 显示 create、run、stop 等可用操作
  • 不带参数时作为帮助信息使用

创建新的 Container machine:

container machine create --name demo --set-default alpine

关键点:

  • --name 指定机器名称
  • --set-default 设为默认机器,后续命令无需重复指定名称
  • alpine 是常用的轻量级 Linux 镜像
  • 使用与容器相同的 OCI 镜像格式

在 Container machine 中执行命令:

container machine run echo hi

关键点:

  • 在 Linux 环境中执行单条命令
  • 命令执行完毕后返回

查看系统类型差异:

container machine run uname

关键点:

  • macOS 上 uname 返回 “Darwin”
  • Container machine 中返回 “Linux”
  • 证明代码运行在 Linux 环境中

自动集成特性(5:39

Container machine 自动镜像 macOS 的用户名和当前工作目录:

# 在 macOS 上
whoami   # 返回当前用户名
pwd      # 显示当前用户目录

在 Container machine 中运行相同命令,会返回相同的用户名和路径。

关键点:

  • 自动用户创建(user mapping)
  • 文件系统自动共享
  • 工作目录保持一致
  • 无需手动配置映射关系

启动交互式 shell:

container machine run

关键点:

  • 不带参数时启动交互式会话
  • 进入完整的 Linux shell 环境
  • 可以执行多步骤操作

列出和管理机器(8:01

container machine list

关键点:

  • 显示所有 Container machine 的名称
  • 显示每个机器的 IP 地址
  • 显示资源使用信息
  • IP 地址用于网络访问

跨平台开发工作流(7:03

演示展示了一个典型的跨平台开发场景:用 Xcode 在 macOS 上编辑代码,在 Linux 环境中构建运行,用 Safari 测试结果。

项目结构:

Package.swift
Source/
Public/    # 静态资源

在 Container machine 中运行 Vapor 服务器:

container machine run
swift run

关键点:

  • 通过共享文件系统访问项目文件
  • Container machine 有独立网络
  • 从 macOS 访问需要使用机器的 IP 地址

Vapor 配置需要设置为监听外部接口(使用 Container machine 的 IP 地址)。

关键点:

  • 在 Xcode 中修改配置
  • 修改立即在 Container machine 中可用
  • 无需重启或重新加载

工作流程展示:

  1. 在 Xcode 中编辑代码
  2. 在 Container machine 中构建运行
  3. 在 Safari 中访问测试
  4. 用 Icon Composer 修改图标
  5. 刷新 Safari 即可看到更新
  6. 无需文件复制或同步操作

架构设计(1:00

Containerization 框架提供了:

  • 存储 API
  • 网络 API
  • 执行 API
  • Linux init 系统

每个容器获得基于虚拟机的隔离,启动时间在亚秒级别。

关键点:

  • 轻量级虚拟机提供性能优势
  • 虚拟机级别的安全隔离
  • 快速启动支持频繁切换

核心启发

  1. 微服务本地开发环境

    • 每个微服务一个 Container machine,独立工具链和依赖
    • 避免”在我的机器上能跑”问题
    • 入口:container machine create --name service-a
  2. CI/CD 流水线预演

    • 用 Container machine 复制生产 Linux 环境
    • 本地验证部署脚本和配置
    • 入口:使用生产环境的 OCI 镜像创建机器
  3. 跨语言项目统一开发

    • macOS 处理前端,Container machine 运行后端服务
    • 共享项目文件,无需同步
    • 入口:安装对应语言的工具链镜像
  4. 工具链版本隔离

    • 不同项目使用不同版本的 Node.js、Python、Go
    • 无需版本管理工具,每个机器独立环境
    • 入口:基于工具链版本创建专用机器
  5. 安全沙箱测试

    • 在隔离的 Linux 环境中测试不受信任的代码
    • 虚拟机级隔离保护宿主机
    • 入口:container machine run 执行测试命令

关联 Session

评论

GitHub Issues · utterances