今天介绍个工具:OrbStack。
我们一直觉得,Mac 做开发挺好。
不是“能不能”的问题,是“舒不舒服”的问题。
写代码,跑服务,调接口,连云端,起个数据库,打一套脚手架,基本都顺。真正让人烦的,往往不是开发本身,而是那种——只差一点就复现不了的时刻。
比如:
线上是 Ubuntu。本地是 macOS。看起来都能跑,细节却总差一口气。
glibc、openssl、systemd、权限、目录结构、daemon、日志链路……还有那句让人叹气的:“线上 amd64,你本地 M 系列。”
很多坑不在代码里,在系统里。
所以我们时不时就需要做一件事:
在本地搞一台“像线上一样”的 Linux。(对大厂的朋友来说,这不是问题,资源多的很)用来复现、验证、回归。解决“它只在线上坏”的那种问题。
然后,常见的两条路就出来了。
第一条路:容器。看起来现代,实际很容易把人磨没脾气
容器这东西,确实好用。
快。标准化。团队沟通成本低。compose 一写,MySQL/Redis/Kafka 一起起。
但问题在于:我们很多时候要的不是“跑一个服务”,而是“跑一台服务器”。
容器更像“进程的盒子”,不是“机器的生活”。
于是就会出现三个熟悉的痛点。
第一,镜像会变成主成本。我们想复刻环境与行为,结果先在“怎么拉镜像、怎么加速、怎么稳定”上耗时间。网络条件一复杂,镜像这关就能把人劝退。
第二,容器不是机器。我们要的是 systemd、daemon、权限、目录、日志链路这些“机器行为”。容器当然能硬搞,但总会觉得差一点:“我这是在模拟线上,还是在模拟一个被裁剪过的线上?”
第三,资源占用体感很重。尤其是 Docker Desktop 在 macOS 上的体验:开着像在供养它,关了又不一定愿意把内存还回来。
这条路能走。但走久了会发现:我们不是在做开发,我们是在给工具打补丁。
第二条路:虚拟机 / 裸机。更像服务器,但也更像运维
于是有人说:那就上 VM 呗。
VMware、Parallels,开一台 Linux,什么都真实。这话没错。
但 VM 的代价也很真实:
分配磁盘、CPU、内存;处理网络、共享目录、端口;临时复现一个问题,搞得像在建设基础设施。
更“狠”的做法是:找台旧笔记本刷 Linux。这已经不是复现问题了,这是“开分公司”。 以前手机各种系统盘,现在都没有了,装个系统都觉得费劲。
所以我们一直想要的是一种东西:
既像服务器,又不要那么重。能随手起,随手用,用完就放下。
然后 OrbStack 就很自然地出现在视野里。
OrbStack:它不跟我们讲情怀,它就想把这事做轻
OrbStack 的定位很清楚:
- 容器照样跑(很多人把它当 Docker Desktop 的替代)。
- 但更关键的是:它提供 Linux machines ——一种更像 WSL2 的方式,在 Mac 上启动一台轻量 Linux。
注意这个差别:
我们过去是在“拼环境”:先搞镜像,再搞容器,再搞各种边界行为。
现在更像是“先有一台机器”:起一台 Linux,然后按线上方式装包、改配置、启服务、跑测试。
这一下,味道就对了。随随便便模拟个CentOS或者Ubuntu到MAC上。
Orb对我们更省事:不是更强,是更顺
我们用着明显顺的地方,通常是这些:
1)复刻线上更像复刻机器,而不是复刻镜像
很多时候我们要的真不是某个镜像。我们要的是一台 Linux:
apt 装包;改配置;跑服务;看日志;把那次线上行为再走一遍。
Linux machines 的思路就是:把这台“本地服务器”变得很轻。不需要为了复现而先做一堆镜像工程。
2)资源占用更像“按需使用”,而不是“开着就得供着”
我们最怕的不是慢。是那种“我只是想临时跑一下,结果把整台 Mac 变成它的附属品”。
OrbStack 的思路更像子系统:需要它时它出现,不用时它别太抢戏。动态内存、可回收的占用,这种东西日常体感非常明显:风扇、续航、系统流畅度都会变。
3)Apple Silicon 下 amd64 的现实问题,更容易处理
线上还是 amd64 的情况太普遍了。在 M 系列上做本地复现,架构差异会反复出现。
OrbStack 的 Linux machines 支持通过 Rosetta 跑 x86_64/amd64。这就让“本地像线上”少了很多心理负担。
Orb和Docker怎么选?我们一般就按这个逻辑来
也不需要上升到信仰。
很简单:
- 只起标准组件(MySQL/Redis/Kafka):容器最省脑子。
- 要模拟服务器行为(系统包、systemd/daemon、权限目录、线上差异、架构兼容):Linux machine 更顺。
工具是服务人的。不是反过来。
最后
开发里最浪费时间的,常常不是写代码。是“为了复现环境而折腾环境”。
过去要么在容器的边界里绕,要么在虚拟机的成本里扛。
OrbStack 的价值不是什么“更强”。它就是把这件事做得更像正常人:
在 Mac 上轻量拥有一台 Linux,把复现、验证、回归变成日常动作。
起它。用它。然后回到我们的开发节奏里去。
就这么简单。