一句话概括
OrbStack 是 macOS 上的轻量级容器与虚拟机运行环境,可以理解为 Docker Desktop 的替代品,但启动更快、内存占用更少、体验更原生。
为什么需要 OrbStack
在 Mac 上跑 Docker,传统方案是 Docker Desktop。但它有几个痛点:
| 痛点 | Docker Desktop | OrbStack |
|---|---|---|
| 启动速度 | 30 秒+ | 约 2 秒 |
| 内存占用 | 2-4 GB 起步 | 几百 MB |
| CPU 占用 | 后台常驻高 | 几乎无感 |
| 文件系统性能 | 挂载卷慢 | 接近原生速度 |
| 商业授权 | 大公司需付费 | 个人免费 |
简单说:同样的事,OrbStack 干得更快、更省资源。
OrbStack 能做什么
1. 运行 Docker 容器
安装 OrbStack 后,docker 和 docker compose 命令自动可用,和 Docker Desktop 完全兼容:
bash
# 拉取并运行一个容器
docker run -d -p 8080:80 nginx
# 使用 docker compose
docker compose up -d
所有 Docker Hub 上的镜像、Dockerfile、docker-compose.yml 都能直接用,无需任何修改。
2. 运行 Linux 虚拟机
OrbStack 内置了轻量级 Linux 虚拟机管理,一条命令创建:
bash
# 创建一个 Ubuntu 虚拟机
orb create ubuntu myvm
# 进入虚拟机
orb shell myvm
# 列出所有虚拟机
orb list
支持 Ubuntu、Debian、Fedora、Arch 等多个发行版。
3. 网络互通
OrbStack 的一个杀手级特性是容器/虚拟机与 Mac 之间的无缝网络:
- 容器访问 Mac :通过
host.docker.internal域名 - Mac 访问容器 :通过
容器名.orb.local域名(不需要端口映射也能直接访问) - 容器间互访:通过 Docker 网络,和标准 Docker 行为一致
bash
# Mac 上直接用域名访问容器内的服务
curl http://my-container.orb.local:3000
4. 文件共享
Mac 的文件系统自动挂载到容器和虚拟机中,性能接近原生:
bash
# 挂载 Mac 目录到容器
docker run -v ~/projects:/app node:20 node /app/server.js
安装
方式一:官网下载
前往 orbstack.dev 下载 dmg 安装包,拖入应用程序文件夹。
方式二:Homebrew
bash
brew install orbstack
安装完成后打开 OrbStack,它会自动配置好 Docker 运行时。如果之前安装了 Docker Desktop,OrbStack 会提示迁移。
核心概念
OrbStack vs Docker Desktop
两者的关系类似于 Chrome vs Safari ------ 都是浏览器,但实现不同。
OrbStack 和 Docker Desktop 都提供:
- Docker 引擎(运行容器)
- docker CLI 命令
- docker compose 支持
- 图形化管理界面
但 OrbStack 在底层用了不同的虚拟化技术(基于 Apple Virtualization Framework),所以更轻更快。
兼容性
OrbStack 100% 兼容 Docker CLI。 你的 Dockerfile、docker-compose.yml、CI/CD 脚本不需要做任何修改。切换到 OrbStack 对开发工作流是完全透明的。
唯一的区别是 OrbStack 只能在 macOS 上运行(因为它基于 Apple 的虚拟化框架)。
host.docker.internal
这是一个特殊域名,解析为 Mac 宿主机的 IP。在容器内部,localhost / 127.0.0.1 指的是容器自己,而不是 Mac。所以当容器需要访问 Mac 上运行的服务时(比如本地的 Ollama),必须使用 host.docker.internal:
csharp
容器内:
127.0.0.1 → 容器自身
host.docker.internal → Mac 宿主机
常用命令
Docker 相关(和原生 Docker 一样)
bash
docker ps # 查看运行中的容器
docker compose up -d # 启动服务
docker compose down # 停止服务
docker compose up -d --build # 重建并启动
docker logs <容器名> # 查看日志
docker exec -it <容器名> sh # 进入容器
OrbStack 专属
bash
orb # 打开 OrbStack 管理界面
orb list # 列出所有虚拟机
orb create ubuntu vm1 # 创建虚拟机
orb shell vm1 # 进入虚拟机
orb stop vm1 # 停止虚拟机
orb delete vm1 # 删除虚拟机
实际使用场景
场景一:本地开发环境
把数据库、Redis、消息队列等中间件跑在容器里,应用代码在 Mac 上开发:
yaml
# docker-compose.yml
services:
postgres:
image: postgres:16
ports: ["5432:5432"]
environment:
POSTGRES_PASSWORD: dev123
redis:
image: redis:7
ports: ["6379:6379"]
场景二:部署 API 服务
像本项目一样,把 Node.js API 服务容器化部署:
yaml
services:
api:
build: .
ports: ["3000:3000"]
environment:
- OLLAMA_URL=http://host.docker.internal:11434
场景三:测试 Linux 环境
需要在 Linux 环境下测试脚本或编译项目:
bash
orb create ubuntu test-env
orb shell test-env
# 现在你在一个完整的 Ubuntu 环境中
从 Docker Desktop 迁移
- 安装 OrbStack
- 打开 OrbStack,它会自动检测已有的 Docker Desktop 并提示迁移
- 迁移完成后可以卸载 Docker Desktop
- 所有
docker命令、docker-compose 项目无缝继续使用
总结
| 特性 | 说明 |
|---|---|
| 定位 | Mac 上的 Docker + Linux VM 运行环境 |
| 核心优势 | 快、省资源、网络好用 |
| 兼容性 | 100% 兼容 Docker CLI 和 Compose |
| 价格 | 个人免费,商业付费 |
| 系统要求 | macOS 13+,Apple Silicon 或 Intel |
一句话:如果你在 Mac 上用 Docker,换 OrbStack 就对了。