Mac 上的 Docker — Docker Desktop vs OrbStack vs colima + Apple Silicon 配置
在 Apple Silicon Mac 上对比三种容器运行时。许可证、性能、内存用量与兼容性——根据场景选择最适合的方案。
提到「Mac 上的 Docker」,大多数人第一时间想到 Docker Desktop。但自 2021 年许可证变更(员工超过 250 人或营收超过 1000 万美元的企业需付费)后,替代方案迅速追赶上来。OrbStack 和 colima 是两大主流替代品,在 Apple Silicon 上都比 Docker Desktop 更轻量。
我认为容器运行时的选择不只是工具偏好,而是许可证合规与资源效率的权衡。以前 Docker Desktop 是默认选择;如今 Apple Silicon 上 OrbStack 的内存占用和启动速度使它成为个人开发机的更合理方案,因为资源效率直接影响日常开发体验。
本指南在 Apple Silicon(M1-M4)+ macOS 14+ 上对三种运行时进行对比,并提供决策表帮助你选择。确定选择后,按对应章节完成实际安装步骤。
TL;DR
| 运行时 | 许可证 | 空闲内存 | 启动时间 | UI | docker compose | k8s | Apple Silicon ARM |
|---|---|---|---|---|---|---|---|
| Docker Desktop | 大型企业需付费 | 约 2GB | 约 10 秒 | ✅ | ✅ | ✅ | ✅ |
| OrbStack | 个人免费,企业付费 | 约 500MB | 约 2 秒 | ✅ | ✅ | ✅ | ✅(原生) |
| colima | 开源(MIT) | 约 600MB | 约 5 秒 | ❌ 仅 CLI | ✅ | ✅(可选) | ✅ |
- 企业政策允许 + 需要 UI → Docker Desktop
- 个人机器 + 追求快速轻量 → OrbStack(强烈推荐)
- 完全免费 + 仅用 CLI → colima
前提条件
- macOS 14+ + Apple Silicon(M1-M4)推荐
- Homebrew(Mac 初始配置)
- 16GB 或更多内存(8GB 在构建时会卡顿)
1. 决策表 — 如何选择
选 Docker Desktop 的情形
- 需要 Kubernetes UI — Docker Desktop 的 k8s 选项卡是最简单的
- 公司标准 — 不遵循团队选择会增加排查问题的成本
- 团队混用 Mac 和 Windows — Docker Desktop 提供最一致的体验
选 OrbStack 的情形
- 个人机器 + 性价比优先 — 个人使用免费,速度约为 Docker Desktop 的 4 倍
- 同时想要轻量 Linux 虚拟机 — OrbStack 捆绑了 Docker + Linux 机器管理器
- 内存有限 — 空闲约 500MB
选 colima 的情形
- 需要避免商业许可证 — MIT 开源,企业使用安全
- 自动化优先 — 仅 CLI,完全由配置文件驱动
- CI / 开发容器兼容 — 基于 Lima,与 macOS 集成良好
如果无法决定,先试用 OrbStack 30 天免费版。体验最流畅。
2. Docker Desktop 设置 — 10 分钟
2.1 安装
brew install --cask docker或从 docker.com 下载。Apple Silicon 构建会自动选择。
2.2 首次运行
Cmd + Space → Docker 或 Spotlight。菜单栏出现 🐳 图标即表示已运行。
docker --version # Docker version 27.x.x
docker run hello-world # 标准 hello-world 容器2.3 资源调优(必须)
Docker Desktop → 设置 → 资源:
- CPU:主机 CPU 数量的一半(8 核机器配置 4 核)
- 内存:主机内存的 25-50%(16GB 机器配置 4-8GB)
- 磁盘映像大小:60GB 以上(镜像积累很快)
默认空闲约 2GB。按上述调优。
2.4 许可证说明
| 企业规模 | 许可证 |
|---|---|
| 员工数不足 250 人 且 营收不足 1000 万美元 | 免费(含个人) |
| 超过上述门槛 | 付费(从 $9/座位/月起) |
使用前请确认公司政策。官方许可证页面。
3. OrbStack 设置 — 5 分钟
3.1 安装
brew install --cask orbstack或访问 orbstack.dev。
3.2 首次运行
启动 OrbStack → 接受许可证 → Docker 命令立即可用。
docker --version # Docker version 27.x.x(OrbStack 捆绑)
docker run hello-world如果同时安装了 Docker Desktop,它们的 PATH 条目会冲突。使用 OrbStack 前请退出 Docker Desktop。
3.3 OrbStack 独特优势
Linux 虚拟机(可选) — 1 秒内启动轻量 Ubuntu 虚拟机。SSH 直接可用。
orb create ubuntu my-ubuntu
orb -m my-ubuntu # SSH 进入文件系统集成 — 容器文件直接挂载到 ~/OrbStack/。可从主机执行 code ~/OrbStack/docker/...。
自动资源伸缩 — 无需显式设置内存。随使用量自动扩缩。
3.4 许可证
| 用途 | 价格 |
|---|---|
| 个人(学习、开源) | 免费 |
| 企业(1 个以上座位) | $8/月(Pro)— 比 Docker Desktop 便宜 |
4. colima 设置 — 10 分钟
4.1 安装
brew install colima docker docker-composedocker CLI 是独立的。colima 只提供后端虚拟机。
4.2 启动
colima start
# 首次运行时 colima 会启动 Lima 虚拟机并下载约 500MB
docker --version
docker run hello-world默认:2 CPU、2GB 内存、60GB 磁盘。修改方法:
colima start --cpu 4 --memory 8 --disk 100配置保存在 ~/.colima/default/colima.yaml。
4.3 生命周期
colima status # 是否运行中?
colima stop # 停止(重启后需重新 start)
colima delete # 删除虚拟机本身(镜像 + 卷将丢失)4.4 Kubernetes(可选)
colima start --kubernetes
kubectl get nodes # 一个 colima 节点基于 k3s,轻量,但无法替代真正的生产级集群。
5. Apple Silicon 上的常见问题
5.1 ARM 镜像 vs AMD64 镜像
大多数官方镜像(node、python、nginx)已提供 ARM64 构建。偶尔会看到:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8)
解决方法:
# 1)找同一镜像的 ARM 标签
docker pull --platform linux/arm64 myimage:tag
# 2)如无法避免,强制使用 AMD64(Rosetta 模拟 — 较慢)
docker run --platform linux/amd64 myimage:tag5.2 卷挂载性能
macOS 文件系统 → Linux 容器的挂载在每种运行时上都较慢。在大型 node_modules、Rails 应用等场景中最为明显。
- OrbStack:最快(Virtio-fs 优化)
- Docker Desktop:启用 VirtioFS(设置 → 通用 → "Use Virtio-fs")
- colima:
colima start --mount-type virtiofs(Lima 1.x+)
或将源码保存在 docker volume 中 — 速度快,但 IDE 集成较复杂。
5.3 buildx 多架构构建
在 CI 中需要同时推送 AMD64 和 ARM64 时:
docker buildx create --use --name multiarch
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:latest --push .Docker Desktop 和 OrbStack 已捆绑 buildx。colima 可能需要额外设置。
6. 迁移 — Docker Desktop → OrbStack
镜像和卷按运行时隔离,无法自动迁移。顺序:
# 1. 从 Docker Desktop 导出重要镜像/卷
docker save myimage:tag -o myimage.tar
docker run --rm -v mydata:/data -v $(pwd):/backup alpine \
tar czf /backup/mydata.tar.gz -C /data .
# 2. 退出 Docker Desktop
osascript -e 'quit app "Docker"'
# 3. 启动 OrbStack,然后导入
docker load -i myimage.tar
docker run --rm -v mydata:/data -v $(pwd):/backup alpine \
tar xzf /backup/mydata.tar.gz -C /data实际上,大多数人会跳过迁移:在 OrbStack 中重新 docker compose up 即可重建一切。
7. 验证
以下命令在你选择的运行时上均应成功:
# 1. 基础
docker --version
docker run hello-world
# 2. 容器 + 端口
docker run -d --name nginx -p 8080:80 nginx
curl http://localhost:8080
docker stop nginx && docker rm nginx
# 3. 卷挂载
mkdir -p /tmp/dockertest && echo "hello" > /tmp/dockertest/test.txt
docker run --rm -v /tmp/dockertest:/data alpine cat /data/test.txt
# 4. compose
docker compose version
# 5. buildx
docker buildx version8. 故障排除
Cannot connect to the Docker daemon
- 运行时是否真的在运行?检查 Docker Desktop 菜单栏图标、
orb status、colima status docker context ls— 当前激活的 context 是否正确?- 安装了多个运行时时,显式切换:
docker context use default或colima等
- 安装了多个运行时时,显式切换:
镜像构建太慢
- 确认 BuildKit 已启用:
DOCKER_BUILDKIT=1(Docker 23+ 默认启用) - 利用缓存:将频繁变更的行放在
Dockerfile靠后的位置 - 用
.dockerignore缩小上下文(排除.git、node_modules)
docker-compose vs docker compose
- 新版(v2):
docker compose(空格)。推荐 - 旧版(v1):
docker-compose(连字符)。接近 EOL - 所有运行时均捆绑 v2。如需兼容 v1 写法,可设置别名:
alias docker-compose='docker compose'
docker run 后内存泄漏
- macOS 活动监视器 →
com.docker.virtualization或OrbStack Helper显示内存异常 - 重启运行时:Docker Desktop「重启」/
orb restart/colima restart
卷挂载显示为空
- 检查主机路径权限:macOS 的「文稿」「桌面」「下载」等需要明确授权
- 系统设置 → 隐私与安全 → 文件和文件夹 → 为运行时授予访问权限
在容器内向挂载文件写入时出现 permission denied
- 容器 UID 与主机 UID 不匹配
- 修复方法:
docker run -u $(id -u):$(id -g) ...或在 Dockerfile 中设置USER
9. 对比 — Docker Desktop vs WSL2(Mac vs Windows 用户)
混合 Mac/Windows 团队中的常见问题。
| 场景 | 推荐 |
|---|---|
| Mac 个人机器 | OrbStack |
| Mac 企业机器(大型企业) | Docker Desktop(已获许可)或 colima |
| Windows + WSL2 | docker-wsl2 — 推荐原生 WSL docker |
| 团队统一规定 | 以公司选择为准 |
在跨 OS 团队中,统一 docker-compose.yml/Dockerfile,运行时差异基本消失。
参考资料
- Mac 初始配置 — Homebrew 前置条件
- Windows 上的 Docker(WSL2) — 跨 OS 团队对比
- OrbStack 官方文档
- colima GitHub
- Docker Desktop 定价 — 企业使用前请确认
更新日志
- 2026-05-16:首次发布。Docker Desktop · OrbStack · colima 对比 + Apple Silicon 常见问题 + 迁移 + 六个故障排除案例。