OrbStack](https://orbstack.dev/) 是一种快速、轻便和简单的方式来运行容器和 Linux 机器。Mac 平台中强烈建议用它替换 Docker Desktop,它比 Docker Desktop 占用更少的资源,官方有对比,感兴趣可以在这里查看https://docs.orbstack.dev/benchmarks,从图中对比来看,直接吊打。
OrbStack 占用的资源很少。OrbStack 在空闲时使用大约 0.1% 的 CPU,通常会降至 0%,这比大多数应用程序的后台 CPU 使用率更低!并且还可以在运行容器或者虚拟机的时候使用 orb config
命令来限制 cpu 的最大使用量。当然啦,如果我们想尽量减少 CPU 的占用,那停止任何没有使用的容器或者关闭任何没有使用的虚拟机。OrbStack 是按需分配内存的,并会根据需要增长,并且后面没有使用的内存会自动返回给 macOS,这对于内存堪比黄金的 mac 电脑,真的是非常适合。OrbStack 磁盘占用也比较少,全新安装的 OrbStack 占用不到 10MB 的磁盘空间,并且它采用了完全动态的磁盘管理,几乎没有额外开销,其占用空间会根据需要自动增减。
安装
安装非常地简单,直接去官网https://orbstack.dev/download,选择对应的版本,下载安装即可,个人版是完全免费的。如果安装了 homebrew,推荐使用 brew install orbstack
下载。
使用 OrbStack 运行 docker 容器
命令
OrbStack 包括一个 Docker 引擎来运行容器,无缝支持包括网络、端口转发、挂载目录和卷等功能。 OrbStack 包含最新的命令行工具,包括 Compose 和 buildx,这些工具不用我们自己安装,如果已经安装了其他的 docker 工具(例如 docker Desktop),但是想使用 OrbStack 提供的工具,直接卸载掉原来的工具,OrbStack 提供了从其他工具迁移数据的命令。
运行一个容器试试看:
docker run --name nginx --rm -p 80:80 nginx
在本地访问一下:
可以看到,访问是完全没有问题的,使用docker ps
看一下运行中的容器:
网络
OrbStack 拥有一个定制构建的虚拟网络堆栈,旨在实现无缝连接。它实现了所有常见的网络功能,包括 IPv6、ping 和 traceroute。端口转发、主机网络和其他功能也均受支持。
在 OrbStack 中,容器拥有形如“容器名称.orb.local”的域名,(例如上面例子中的 ngnx 容器就有一个nginx.orb.local
的域名),无需进行配置或使用端口号。
我们可以在另一个容器中试一下:
docker run --rm alpine/curl http://nginx.orb.local
可以看到,在容器中是可以通过域名访问对应容器的服务的。
上面的例子是直接创建一个容器运行的例子,如果使用 docker compose 运行,OrbStack 也提供了域名访问,格式是**service.project.orb.local
**,例如,我们有一个 test
的 project ,里面有两个 服务 foo
和 bar
,那么这两个服务对应的域名就分别是foo.test.orb.local
和bar.test.orb.local
,下面我们用下面的这个例子来测试一下:
version: "3.8"
services:
foo:
image: nginx:alpine
container_name: test_foo
ports:
- "8081:80"
command: /bin/sh -c "echo '<h1>This is Foo</h1>' > /usr/share/nginx/html/index.html && nginx -g 'daemon off;'"
bar:
image: nginx:alpine
container_name: test_bar
ports:
- "8082:80"
command: /bin/sh -c "echo '<h1>This is Bar</h1>' > /usr/share/nginx/html/index.html && nginx -g 'daemon off;'"
使用下面这个命令把,容器运行起来
docker-compose -p test up -d
能看到这个项目已经运行起来了,下面用两个命令来测试一下:
docker run --rm alpine/curl http://foo.test.orb.local
docker run --rm alpine/curl http://bar.test.orb.local
存储
OrbStack 让在 macOS 上原生访问容器、镜像、卷和虚拟机中的文件变得轻松。这与访达、编辑器、命令行工具及其他 macOS 应用程序无缝协作。要开始使用,可从访达边栏中打开“~/OrbStack”,或在 OrbStack 应用程序中点击任何容器、镜像或卷上的文件夹按钮。
- 容器的文件存储目录:
~/OrbStack/docker/containers/<name>
- 卷的存储目录:
~/OrbStack/docker/volumes/<name>
- 镜像的存储目录:
~/OrbStack/docker/images/<tag>
使用 OrbStack 运行 Linux 虚拟机
当前 OrbStack 支持如下的 Linux 发行版:
- Alma
- Alpine
- Arch
- CentOS
- Debian
- Devuan
- Fedora
- Gentoo
- Kali
- NixOS
- openSUSE
- Oracle
- Rocky
- Ubuntu
- Void
命令
使用 orb create
命令创建虚拟机,例如:
# 如果不写版本,默认创建最新的稳定版
orb create ubuntu
# 创建的时候指定版本 24.04 LTS
orb create ubuntu:noble
# 创建的时候指定命令
orb create ubuntu my-machine
执行 orb
命令进入默认 Linux 虚拟机 shell 中,如果想指定其他的虚拟机使用orb -m your-vm-name -u your-vm-user
, 下面的例子我们均在默认虚拟机中测试,如果想在其他的虚拟机中测试,请加上 -m your-vm-name -u your-vm-user
选项。
另外,orb 运行的时候还可以使用 -m
指定 work directory,如果不指定就是当前的 mac 目录。
在虚拟机中运行命令,例如 uname -a
,我们在 mac 的终端里面直接运行orb uname -a
,加上 orb
这个前缀,我们就不用进入虚拟机中,执行命令了。
orb 支持的命令如下:
completion Generate completion script
config Change OrbStack settings
create Create a new machine
debug Debug a Docker container with extra commands
default Get or set the default machine
delete Delete a machine
docker Show commands for using Docker
help Help about any command
info Get info about a machine
k8s Show commands for using Kubernetes
list List machines
login Log in and activate your OrbStack license
logout Log out of your OrbStack account
logs Show logs for a machine
migrate Migrate data from Docker Desktop to OrbStack
pull Copy files from Linux
push Copy files to Linux
rename Rename a machine
report Gather info for a bug report
reset Delete all Linux and Docker data
restart Restart a machine
run Run command on Linux
ssh Show SSH details
start Start OrbStack or a machine
status Check whether OrbStack is running
stop Stop OrbStack or a machine
update Update OrbStack
version Show OrbStack version
$ orb list
NAME STATE DISTRO VERSION ARCH SIZE
---- ----- ------ ------- ---- ----
ubuntu running ubuntu oracular arm64 721.4 MB
ubuntu-24.04 running ubuntu noble arm64 769.2 MB
(base)
除了 orb 之外,还有一个 orbctl 命令,这个命令和 orb 实现的功能是一样的,支持的命令也是一样的是,只不过 使用 orbctl 运行的格式是
orbctl run
或者orbctl shell
OrbStack 除了支持在 mac 系统中直接运行 Linux 命令之外,还支持在 Linux 虚拟机中运行 mac 命令,在命令的前方添加 mac
前缀即可
$ mac uname -a
Darwin Hus-MacBook-Pro.local 24.5.0 Darwin Kernel Version 24.5.0: Tue Apr 22 20:42:08 PDT 2025;
和 orb 命令类似,mac 命令也有一个 macctl 命令,使用方式和 orbctl 类似
我们还可以使用 mac link
将 macOS 命令链接到 Linux。链接后的命令无需在运行前加上 mac 前缀,并且可以像原生 Linux 命令一样使用。例如:
mac link pbcopy
使用 orb push 和 orb pull 这两个命令可以实现 mac 和 Linux 虚拟机之间文件的传输
从 Linux 虚拟机复制文件到 mac
orb pull ~/foo.txt
从 mac 复制文件到 Linux 虚拟机
orb push ~/bar.txt
复制的时候还可以指定主机名和目录
orb push -m my-machine ~/bar.txt /home/my-user/code/
网络
OrbStack 使用定制的虚拟网络堆栈,旨在实现无缝连接。它实现了所有常见的网络功能,包括 IPv6、ping 和 traceroute,并遵循你的 VPN 和 DNS 设置。该网络针对速度进行了优化,在 macOS 和 Linux 之间的吞吐量高达 45 Gbps。和 docker 中的类似,所有的虚拟机都有一个域名,一般是 machine-name.orb.local
,在 mac 中可以使用这个域名连接 Linux 虚拟机中的服务,同样在 Linux 虚拟机中,mac 机器的域名是host.orb.internal
,我们可以使用这个域名连接 mac 中的服务。还有一个更厉害的,如果我们在 mac 平台上启动了 docker 容器,在 Linux 虚拟机中可以使用 docker.orb.internal
来访问 docker 容器中的服务。
# On macOS
docker run --rm -p 80:80 nginx
# On Linux
curl docker.orb.internal