在 Mac 上跑 Linux 容器,Docker Desktop 吃内存太狠了。
我见过不少人抱怨,开几个容器内存就占满,风扇狂转。
最近在 GitHub 上刷到一个苹果官方的开源项目,专门解决这个痛点。
我默默说了一句,苹果终于动手了。
它的名字叫 container,在 GitHub 上已经有 47900 多个 Star。

它就是用来在Mac上运行Linux容器的工具,和Docker Desktop类似,但是架构不同。
最大的差异是每个容器都跑在独立的轻量级虚拟机里,而不是所有容器共享一个虚拟机。
我先给大家看看实际效果
我想要在本地运行一个 Nginx 服务来测试网页的效果。
安装好 container 之后,执行了下面的命令。
container run -d --name web -p 8080:80 nginx:latest
它就开始拉取镜像并启动容器。
拉取速度很快,因为支持并发下载,默认可以同时下载 3 个镜像层。

容器启动时间不到1秒,由于虚拟机已经过深度优化,只保留了最必要的核心部分。
然后自动分配独立的 IP 地址。
每个容器都有自己独立的虚拟机和独立的IP地址,不像Docker那样所有的容器都挤在同一个虚拟机里面。

使用container ls可以查看到容器的IP地址以及运行状态。
然后在浏览器中输入localhost:8080。
就可以看到Nginx的欢迎页面了。
整个过程和使用Docker没有什么区别。
它的核心设计有几个特点
01 一个容器对应一个虚拟机。
传统的容器是共享内核的,而Apple Container给每一个容器都提供了一个独立的轻量级虚拟机。

这种架构提供了硬件级别的隔离,即使容器被攻破,也无法逃逸到宿主机或其他容器。
虚拟机启动时间小于 1 秒,因为使用了 macOS 的 Virtualization 框架,针对 Apple Silicon 深度优化。
02 完全兼容 OCI 标准。
可以拉取和推送标准容器镜像,支持 Docker Hub、GitHub Container Registry 等所有 OCI 兼容的仓库。
你现有的Docker镜像可以直接使用,不需要重新构建。

镜像凭证保存在macOS Keychain里,更安全一些,不用担心凭证被泄露。
03 Container Machine 是亮点。
v1.0 版本新增的核心功能是提供持久化的 Linux 开发环境。
这是Docker没有的。
容器机器会自动挂载你的 Mac 主目录,让你在 Linux 环境下也可以访问到 Mac 上的文件和配置。

04 镜像构建也很方便。
使用了BuildKit构建引擎,可以将镜像直接在本地进行构建。
支持多平台构建,可以同时构建 arm64 和 amd64 架构的镜像。
构建器可以单独启动和停止,并且可以设置CPU和内存限制来提高构建效率。
05 网络管理比较灵活。
支持创建隔离的用户自定义网络,每个容器可以拥有自己的 IP 地址。

支持端口转发、DNS 设置、自定义 MAC 地址等网络高级功能。
macOS 26 还有完整的网络隔离,容器之间不能直接通信。
可以使用container network create来创建自定义网络,并且使用--network参数把容器连接到指定的网络上。
06 Rosetta 转译也可以。
在 ARM 架构的 Mac 上可以运行 x86_64 架构的容器镜像。
使用macOS的Rosetta 2技术进行转译,性能要比QEMU模拟好很多。
适合需要在 Apple Silicon 上测试 x86 应用兼容性的场景。
07 SSH 认证转发很贴心。
支持把 Mac 的 SSH 认证套接字转发到容器里。
这样可以在容器内直接使用 SSH 密钥进行 git clone 等操作,无需在容器内重新配置密钥。

容器重启之后会自动更新套接字路径,保证 SSH 功能正常运行。

该功能对于开发者来说非常实用,不需要在每一个容器中都配置一次SSH密钥。
08 资源监控也很好用。
使用stats命令可以实时查看容器的CPU、内存、网络、磁盘使用情况。
支持输出为JSON格式,便于脚本化监控和告警。
可以查看单个容器或者所有的正在运行中的容器的统计信息,就像用htop看进程一样直观。
想试的话,装起来很简单
下载官方签名的安装包,双击安装就可以了。

也可以使用 Homebrew 来安装:
brew install --cask container
安装完毕之后启动系统服务:
container system start
就可以像使用Docker一样拉取镜像、运行容器了。
到这里边界也给大家提提。
它只支持 Apple Silicon Mac,Intel Mac 用不了。
需要macOS 26以上版本,利用新系统中的虚拟化和网络特性。
而且不支持Docker Compose,没有Docker Socket。
因此很多依靠Docker API的工具链不能直接迁移。
对企业用户而言,Docker Desktop 企业版的费用很重,而 Apple Container 完全开源免费。
但如果你需要完整的 Docker 生态支持,可能还得等一段时间。
写在最后
我也遇到过 Docker Desktop 占内存的问题。
开几个容器,内存就吃紧,风扇狂转。
Apple Container 使用了 VM 级别的隔离,虽然结构比较复杂,但是安全性能更好。
适用于安全要求较高、容器数量较少的开发场景。
如果要跑几十个容器,或者对Docker Compose有重度依赖的话,目前还是Docker Desktop更合适。
项目基于 MIT 协议开放,感兴趣的同学可以去 GitHub 仓库看看源码和文档。
开源地址:https://github.com/apple/container
既然看到这了,欢迎随手点赞、在看、转发,也可以给我个星标⭐,接收最新的文章,我们下期见!