Closed9
OrbStackを調べる
ピン留めされたアイテム
特徴
https://docs.orbstack.dev/architecture
-
WSL2と同じく、Linuxアプリケーションを実行する最低限のVMを用意することで実現されている
- Colima が lima を使用するのと様式は同じだが、OrbStack 独自のエンジンが使用されている
- Docker 機能本体は組み込みの VMとは別に Docker エンジンが組み込まれている
- シームレスにVMと統合されているので気になるタイミングは殆どないとされている
- Docker Desktop とは逆にモノリシックな実装にしているため高速に動作できるということらしい
- VirtioFS の統合がサポートされており、macOS 上のファイルにも高速にアクセスできる
- Finder に Docker 環境と Linux 環境それぞれのファイルに簡単にアクセスできるように、ドライブがマウントされる
- Linux VM をサポートしているので、Intel x86 向けのプログラムを実行できるほか、Rosetta2 の統合もサポートしている。Apple Silicon で動作する macOS ではいずれかの手段を選択できる
- macOS上で動作するフロントエンドアプリは、Swift で構築されており、省メモリで高速に動作する
ベンチマーク
https://docs.orbstack.dev/benchmarks
-
Docker Desktop や Colima との比較が公開されている
- 2秒で環境が起動する (Docker Desktop: 15秒, Colima: 20秒)
- アイドル時のCPU利用率は0.1% (Docker Desktop: 25%, Colima: 2%)
- ネットワークスループットは48Gbps (Docker Desktop: 2.5Gbps, Colima: 2.6Gbps)
- ※ 手元で確認したところ、OrbStack: 49Gbps、Colima: 3.66Gbps となった
- 起動直後に使用するメモリは687MiB (Docker Desktop: 8GiB, Colima: 1GiB)
- 高速に動作することを手元で再現するコマンドもいくつか公開されている
基本操作
# 起動する
orbctl start
# 起動した環境を一覧にする
orbctl list
# 指定の環境を停止する
orbctl stop <ID/NAME>
# Docker を含めたすべての Linux 環境を終了する
orbctl shutdown
# ヘルプを表示
orbctl help
Docker機能の使用方法
https://docs.orbstack.dev/docker/
- インストール後、Docker機能を有効にすると基本的な設定が全て入った状態になる。
-
docker context ls
を実行すると orbstack の設定がすでに入っていることがわかる。
❯ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
default (...) unix:///var/run/docker.sock
orbstack * OrbStack unix:///Users/*****/.orbstack/run/docker.sock
LinuxVM機能の使用方法
https://docs.orbstack.dev/machines/
- LinuxVM機能では15種類のディストリビューションからOSを選択してLinux環境を構築できる
- GUIを使用する他、orb もしくは orbctl を使用することもできる
# orb VM を作る
orbctl create ubuntu
# orb VM のシェルを取る
orb
# orb VM 上でコマンドを実行する
orb uname -a
# SSH で orb VM にログイン (セットアップ時に自動で追加されている)
ssh orb
メモ
- インストール直後からほぼ何もせず使えるようになるのが良いポイント
- 初回の起動速度や iperf3 を使用したネットワークスループットの確認は OrbStack が優位であった
- Colima は Alpine をカスタマイズした環境がベースだが、それ以外の OS を選択できるのも良い
おまけ
- Orbstack と Colima のスペックを CPU:10, MEM:8GB, Rosetta有効に揃えて、Go製の簡単なWebアプリを作ってベンチマークを取ったところ、Colimaのほうがスループット良い結果になった。
# OrbStack の場合
❯ bombardier --fasthttp -d 10s -c 150 'http://localhost:3000/'
Bombarding http://localhost:3000/ for 10s using 150 connection(s)
Done!
Statistics Avg Stdev Max
Reqs/sec 44397.83 5297.60 56868.84
Latency 3.38ms 682.09us 45.46ms
HTTP codes:
1xx - 0, 2xx - 444038, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 7.75MB/s
# Colimaの 場合
❯ bombardier --fasthttp -d 10s -c 150 'http://localhost:3000/'
Bombarding http://localhost:3000/ for 10s using 150 connection(s)
Done!
Statistics Avg Stdev Max
Reqs/sec 52652.97 5195.79 63945.44
Latency 2.85ms 446.16us 23.39ms
HTTP codes:
1xx - 0, 2xx - 526535, 3xx - 0, 4xx - 0, 5xx - 0
others - 0
Throughput: 9.19MB/s
このスクラップは2023/06/18にクローズされました