Docker Desktop vs OrbStack:Mac上跑容器,到底谁更快?

Mac用户跑Docker,这几年一直有个痛点——Docker Desktop太吃资源了。打开它,风扇转,内存飙,16GB的MacBook Air直接卡成PPT。2022年,一个叫OrbStack的开源工具横空出世,号称“Docker Desktop的轻量替代品”。两年过去,它真的能打吗?

我用一台M2 MacBook Air(8GB内存)做了实测。跑了三个场景:启动时间、镜像拉取、容器启动。结果有点意思。

启动速度:OrbStack快得离谱

先说启动。Docker Desktop从点开图标到可用,平均需要18秒。这18秒里,它在后台启动虚拟机、加载daemon、检查更新。OrbStack呢?4秒。差距在哪?OrbStack用的是macOS原生的虚拟化框架,不需要额外跑一个完整的Linux虚拟机。Docker Desktop用的是HyperKit,相当于在Mac里再装个小系统。

实测数据:冷启动Docker Desktop,从点图标到docker ps能执行,耗时18.2秒。OrbStack,4.1秒。差了4倍多。

内存占用:OrbStack省了将近一半

内存是Mac用户的命门。Docker Desktop默认会占2GB左右的内存,实际用起来经常飙到3-4GB。OrbStack默认可配置,我设了1GB上限,实际运行一个Nginx加一个PostgreSQL容器,占用约1.2GB。

htop看,Docker Desktop的进程列表里,光是com.docker.hyperkit这个虚拟机进程就占了2.3GB。OrbStack的进程叫orbstack,占1.1GB。省了将近一半。

但有个坑:OrbStack的默认设置里,内存上限是1GB。如果你跑大型应用,比如一个Java微服务,1GB可能不够。需要手动调。Docker Desktop默认2GB,但也可以调。

镜像拉取:差距不大

拉取镜像的速度,两者差别不大。我试了拉取nginx:latest(约187MB),Docker Desktop用了12秒,OrbStack用了11秒。拉取node:18(约345MB),Docker Desktop 23秒,OrbStack 21秒。基本在误差范围内。

原因很简单:镜像拉取走的是网络,工具本身能优化的空间有限。OrbStack有缓存机制,拉过的镜像会存本地,第二次拉相同镜像时几乎秒开。Docker Desktop也有缓存,但偶尔会清理。

容器启动:OrbStack稍快

启动一个Nginx容器,Docker Desktop从docker run到能访问,耗时0.8秒。OrbStack 0.5秒。启动PostgreSQL,Docker Desktop 1.2秒,OrbStack 0.9秒。

差距主要来自底层虚拟化。OrbStack的容器直接跑在macOS的虚拟化框架上,省去了HyperKit那层抽象。但说实话,0.3秒的差距,日常使用基本感觉不到。

稳定性:Docker Desktop更成熟

OrbStack有个问题:偶尔会崩溃。我用了一个月,遇到过两次容器突然断开连接,需要重启OrbStack。Docker Desktop在这方面更稳,我用了三年,只崩过一次。

另外,OrbStack对某些Docker功能的支持还不完全。比如Docker Compose的某些高级特性、Swarm模式,OrbStack的支持文档写得不够清楚。Docker Desktop作为官方工具,兼容性最好。

价格:OrbStack免费,Docker Desktop要钱

Docker Desktop个人版免费,但商业使用需要付费。OrbStack完全开源免费。如果你在公司用,OrbStack没这个顾虑。

但免费也有代价。OrbStack的社区支持不如Docker Desktop。遇到问题,Docker Desktop有官方文档和论坛,OrbStack主要靠GitHub Issues。

到底选谁?

如果你用的是M1/M2 Mac,内存只有8GB或16GB,每天要频繁启动和关闭容器,OrbStack能让你省下不少时间。启动快、内存省,风扇也不怎么转。

但如果你跑的是复杂项目,需要Swarm、Kubernetes集成,或者对稳定性要求极高,Docker Desktop更靠谱。多等十几秒启动,换来的是一年不崩的稳定性。

说白了,选哪个取决于你的场景。轻量开发用OrbStack,生产环境用Docker Desktop。两者不冲突,可以同时装,用哪个取决于项目。

最后说一句:工具是死的,人是活的。别被性能对比绑架,哪个顺手用哪个。