Docker 要慌了?苹果开源 Container,Mac 原生容器时代来了!

一年前,苹果在 WWDC25 上正式发布 Containerization Framework,并开源了官方容器工具 Container。

如今,Container 已迎来 1.0 正式版(一周岁啦)。从最初的预览项目,到如今正在成为 Apple Silicon 运行 Linux 容器的重要工具。

那么,Mac 开发者是否可以真正卸载「 Docker Desktop 」了呢?让我们一起深入体验 Apple Container。

1-cover.png


简介

对于 Linux 用户来说,容器可以直接运行在系统之上,因为它本质上依赖 Linux Kernel。

而 macOS 并不具有 Linux Kernel,因此无论是 Docker Desktop、OrbStack 还是 Lima,本质上都需要先启动一个 Linux 虚拟机,再在其中运行容器:

macOS
  ↓
Linux VM
  ↓
Containers

Apple Container 则采用了不同的设计方案:

macOS
 ├─ VM(Container A)
 ├─ VM(Container B)
 └─ VM(Container C)

为每个容器分配独立的虚拟机,而不是让所有容器共享一个 Linux VM。

借助 Apple Silicon、Virtualization.framework 和 Containerization Framework 的深度优化,在获得接近容器启动速度的同时,也提供了虚拟机级别的隔离与安全性。

简单来说,传统方案是 “一个 VM 运行多个容器”,而 Apple Container 则是 “一个容器对应一个轻量级 VM”


安装

系统支持

目前仅支持搭载 Apple Silicon(M 系列芯片)的 Mac,并要求系统版本为 macOS 26 版本。

获取软件包

公 Zhong 号 BugShare 内发送 苹果容器Apple Container 即可获取软件安装包。

自动补全

生成补全脚本:

mkdir -p ~/.zsh/completion

container --generate-completion-script zsh \
> ~/.zsh/completion/_container

编辑 ~/.zshrc,添加以下内容:

fpath=(~/.zsh/completion $fpath)

autoload -U compinit
compinit

重新加载:

source ~/.zshrc

使用

如果你熟悉 Docker,会发现 Container 的命令设计非常接近 Docker,因此非常容易上手。

版本检查

安装完成后,可以通过以下命令确认是否安装成功:

container --version

启动 Container 服务

与 Docker Desktop 不同,Container 采用独立的后台服务管理机制,首次使用前需要启动服务:

# 启动服务
container system start

# 查看服务状态
container system status

# 停止服务
container system stop

运行容器

首次运行会自动从镜像仓库拉取镜像并启动容器。

以 Nginx 为例:

# 运行容器
container run -p 8080:80 nginx
# 完整示例
container run \
  --name nginx-demo \
  --detach \
  --publish 8080:80 \
  --mount type=bind,source=$(pwd)/data/nginx/conf.d,target=/etc/nginx/conf.d \
  --mount type=bind,source=$(pwd)/data/nginx/html,target=/usr/share/nginx/html \
  nginx:latest
# 或简写参数
container run \
  --name nginx-demo \
  -d \
  -p 8080:80 \
  -e TZ=Asia/Shanghai \
  -v $(pwd)/data/nginx/conf.d:/etc/nginx/conf.d \
  nginx

# 查看当前运行中的容器
container list

# 查看详情
container inspect <container-id>

# 要进入容器内部
container exec -it <container-id> /bin/sh

# 查看运行日志
container logs <container-id>

# 实时跟踪日志
container logs -f <container-id>

# 停止容器
container stop <container-id>

# 删除容器
container delete <container-id>

管理镜像

# 查看本地镜像
container image list

# 删除镜像
container image delete <image-name>

构建镜像

Container 同样支持 Dockerfile 文件。

# 构建镜像
container build .

# 指定镜像名称
container build -t myapp:latest .

# 直接运行
container run myapp:latest

创建 Linux 环境

除了运行容器之外,Container 还提供了 Machine 功能,用于创建持久化 Linux 环境。

# 创建环境
container machine create alpine:latest --name dev

# 查看列表
container machine ls

# 进入 Machine
container machine run -n dev

# 停止
container machine stop dev

# 删除
container machine rm dev

Machine 更适合Linux 开发环境、编译环境、测试环境、长期运行服务等(使用体验类似 WSL2)。


Docker?

短期来看 Docker 不会被取代。因为开发者真正依赖的不只是容器,更多的是 Compose、Kubernetes、插件生态、调试工具、CI/CD 集成。

但从长期来看,Apple Container 很可能成为 Apple Silicon 上运行 Linux 容器的标准方案。


写在最后

之前,Mac 开发者一直依赖 Docker Desktop、OrbStack 等第三方来运行容器,而 Apple Container 的出现,意味着 Mac 原生容器时代正式到来。

它不是一个 Docker 替代品,更代表着苹果正试图基于 Apple Silicon 和自身虚拟化技术,重新定义在 macOS 上的容器运行方式。

posted @ 2026-06-24 17:25  BugShare  阅读(35)  评论(0)    收藏  举报