OrbStack

Docker Desktop 殺手 – OrbStack 教學

對於一個開發者來說,docker 可以說是幾乎每個人都會接觸到的東西,一直以來,我都以為要在 local 上跑 docker 只有 docker 官方開發的 Docker Desktop 可以用,但目前工作上要跑的 container,不但滿耗資源,起 container 的速度也很慢,本來慢到都打算提辭呈了(誤,直到某天意外發現了一個拯救我職涯的好東西 — OrbStack

1. 簡介

OrbStack 是個可以完全用來取代 Docker Desktop 的工具,最大的優勢在於,可以更快的啟動 container,吃的資源也比 Docker Desktop 少,也支援 Kubernetes,一但用過就跟瑞凡一樣,回不去了。

不過目前 OrbStack 只支援 macOS,如果是 windows 的使用者,趕緊換台電腦吧!

如果對 OrbStack 底層的技術有興趣,可以參考 OrbStack 的 architecture 文件

2. 與 docker desktop 比較

口說無憑,雖然介紹中說了 OrbStack 比 Docker Desktop 快很多,但沒有量化的數據實在很難讓人信服,OrbStack 官方提供了一些測試的數據,放在 document 的 Benchmarks 裡,可以來看一下:

2.1 Heavy build: Open edX – 比 Docker Desktop 快上 62%

Open edX 是個複雜的應用程式,其中包含了:JavaScript, Python, Ruby, MySQL, MongoDB, Redis, Elasticsearch 等等

使用 OrbStack build image 只需要 17 分鐘,而用 Docker Desktop 的話則需要 45 分鐘,整整快了 62% 左右。

OrbStack

2.2 Heavy build: PostHog – 比 Docker Desktop 快上 63%

PostHog 一樣是個複雜的應用程式,用 OrbStack 來 build 只需要 7 分鐘,用 Docker Desktop 的話則需要 19 分鐘,一樣快了 63% 左右。

OrbStack

2.3 Battery: Kubernetes – 比 Docker Desktop 省下 78% 的耗電量

使用 traefik 和 grafana 來測試 OrbStack 和 Docker Desktop 的耗電量

helm repo add traefik <https://traefik.github.io/charts>
helm repo add grafana <https://grafana.github.io/helm-charts>
helm repo update
helm install traefik traefik/traefik
helm install grafana grafana/grafana

OrbStack 的耗電量是 27 mW,而 Docker Desktop 則是 123 mW,省下將近 8 成的電量,詳細的測量方法可以參閱 OrbStack 的文件

OrbStack

2.4 Battery: Supabase – 比 Docker Desktop 省下 40% 的耗電量

用 docker compose 來執行 self-hosted 的 Supabase application,OrbStack 的耗電量是 82 mW,Docker Desktop 則是 137 mW,省下將近 4 成的電量。

OrbStack

2.5 Battery: Sentry – 比 Docker Desktop 省下 75% 的耗電量

用 docker compose 來執行 self-hosted 的 Sentry application,OrbStack 的耗電量是 180 mW,Docker Desktop 則是 726 mW,省下將近 75% 的電量。

OrbStack

3. 使用 OrbStack

3.1 安裝 OrbStack

mac 的使用者可以直接用 brew 來安裝

brew install orbstack

3.2 Migrate Data from Docker Desktop

安裝完成後,OrbStack 會詢問是否要 migrate Docker Desktop 的資料,如果不小心錯過也沒關係,可以直接執行以下 command 來 migrate:

orb migrate docker

3.3 從 Docker Desktop 切換為 OrbStack

如果原本是使用 Docker Desktop,那麼在執行 docker 或 docker compose 相關的指令時,都會適用 Docker Desktop 來執行,在安裝完 OrbStack 後,需要切換 docker context 才會改為用 OrbStack 來執行 docker,不過也可以透過以下指令隨時切換回 Docker Desktop:

# Switch to OrbStack
docker context use orbstack
# Switch to Docker Desktop
docker context use desktop-linux

切換完 docker context 後,基本上使用的方法就跟原本一樣,只是變成是用 OrbStack 來執行 docker。

3.4 設定 OrbStack 可以使用的硬體資源

和 Docker Desktop 一樣,OrbStack 也可以設定最多可以使用多少的硬體資源,預設是記憶體 8 G,CPU 使用量一樣可以調整。

打開 OrbStack 後,點擊 apple logo 旁的 OrbStack,再點擊「Settings…」打開設定面板

OrbStack

接著切到 System 的 tab,就可以設定資源的使用量了。

OrbStack

4. 結論

已經使用 OrbStack 超過半年的時間了,剛開始使用的時候甚至還沒支援 Kurbernetes,之前用 Docker Desktop 的時候平常都不太敢開 docker,因為會拖垮整個電腦的速度,有時候 SWAP 還會超過 20 GB = =,換成 OrbStack 後 docker 平常幾乎都開著,不但工作效率提高,考試還都考一百分(咦,如果沒啥意外的話也不太可能會再回去用 Docker Desktop 了。

如果覺得我的文章有幫助的話,歡迎幫我的粉專按讚哦~謝謝你!

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top