macOS 上全能的虚拟机管理工具——OrbStack

前言⌗
之前摸鱼的时候在 Twitter 上刷到了 OrbStack 的相关推文。看了 Benchmark 对比后,决定安装上试一下,果然国外开发者诚不欺我!
进入 OrbStack 官网后引入眼帘的 Slogan 是:Say goodbye to slow, clunky containers and VMs
。
特点介绍⌗
- 原生 UI
- 支持 Linux VMs 管理
- 支持 ARM 和 Intel(在 ARM 可以上使用 Rosetta 转译)
- VirtioFS 文件共享
- 完善的 CLI 集成
- Kubernetes 集成
- 更高的网络吞吐
- 支持 eBPF
- 针对 Apple Silicon 优化
- 支持为容器绑定域名
架构设计:
了解更多信息请移步至官方文档:
- OrbStack 官网:https://orbstack.dev
- OrbStack 文档:https://docs.orbstack.dev
安装⌗
域名⌗
这是我觉得比较实用的功能,OrbStack 为 Docker compose 服务和容器都默认绑定了域名,我们可以通过访问 http://orb.local 来查看可访问的服务!
例如我们在 OrbStack 中启动一个 名为 web 的 Nginx 容器,那么就会绑定一个 web.orb.local 的域名。OrbStack 通过 mDNS 来实现域名到 IP 的解析,我们可以通过如下命令查看域名解析的 IP:
当然我们也可以自己手动注册,可以参考 dns-sd 的帮助手册:
但是 mDNS 有一个限制,那就是只对 .local 这个 TLD 有效,这也是为什么 OrbStack 在官方文档中说仅支持 local 的 TLD!
而对于 Docker Compose 启动的容器,则会使用 Docker Compose 项目名称作为域名的中缀,如上图所示,我为 outline 启动的一些列服务,得到的域名如下
- cockroachdb.outline.orb.local
- outline.outline.orb.local
- zitadel.outline.orb.local
- minio.outline.orb.local
- postgres.outline.orb.local
- redis.outline.orb.local
- nginx.outline.orb.local
当然除了默认绑定的域名,我们还可以通过在 docker-compose.yaml
文件中为 service 配置 label 项来手动指定域名:
通过上面的配置,我们可以访问 foo.local 和 bar.local 来访问 Nginx 容器!
总结⌗
OrbStack 强大且优雅,无论是 UI 还是设计理念,据说该项目的开发者还是一名大学生,只能说努力在天赋面前一文不值……
I hope this is helpful, Happy hacking…