Dockerをより高速に使えるOrbStackを使ってみる

Dockerをより高速に使えるOrbStackを使ってみる
Photo by Eliott Van Buggenhout / Unsplash

普段、Railsアプリケーションの開発を行うときに、Dockerを使って開発をしています。

OrbStackを知ったきっかけは以下のポスト。

以前、Rancher Desktopへの移行を試して、またDocker Desktopに戻したりしていますが、懲りずに今度はOrbStackへの移行を試してみようと思います。

昨年に話題になってたみたいですが、残念がら知りませんでした。

OrbStackの良いところは、Docker Desktopとの共存が出来て切り替えが簡単なところです。

ちなみにビジネス利用の場合は年契約で96ドル(月8ドル)かかりますのでご注意ください。

結論を先にいうと、めっちゃ良いのでMacでDocker使うなら使って良いと思います!

インストール

brew install orbstack

Homebrewを使っているのでbrewでインストールします。

==> Installing Cask orbstack
==> Moving App 'OrbStack.app' to '/Applications/OrbStack.app'
==> Linking Binary 'orb' to '/opt/homebrew/bin/orb'
==> Linking Binary 'orbctl' to '/opt/homebrew/bin/orbctl'
🍺  orbstack was successfully installed!

OrbStack.appを開いてみます。Docker Desktopは一旦終了しておきます。

dockerのgetting-startedを実行してみます。

docker run -p 80:80 docker/getting-started

サクッと立ち上がりました。

Docker Desktopのデータを移行する

orb migrate docker

移行できるらしいのでやってみます。コマンド実行時にDocker Desktopが起動します。

ちょっとエラーが出ました。

some data failed to migrate: image sd-auto:68: load image: [-32098] read body: (remote) write /blobs/sha256/d4d7e0b7c05dcf2baa1a60952909c0df7cd6fe98a9ddfca9aa03cb88c8f098a9: no space left on device
image hogehoge-worker:latest: load image: [-32098] read body: (remote) write /blobs/sha256/d4514f8b2aac13e66dfc8b6e15aa2feb0d4ff942a192d9481f09b45e681ceb40: no space left on device
image hogehoge-app:latest: load image: [-32098] read body: (remote) rename /var/lib/docker/image/overlay2/layerdb/tmp/write-set-959636692 /var/lib/docker/image/overlay2/layerdb/sha256/a3b06a5c0a4dbe797b8d27b7dd87a9fe5c4083e016ae10796da448b9309cc251: file exists
image hogehoge-data:latest: load image: [-32098] read body: (remote) rename /var/lib/docker/image/overlay2/layerdb/tmp/write-set-8682259 /var/lib/docker/image/overlay2/layerdb/sha256/a3b06a5c0a4dbe797b8d27b7dd87a9fe5c4083e016ae10796da448b9309cc251: file exists

ディスク容量不足だったり、ファイルが存在してなかったりというエラーですかね。

一旦お試しなので、そのままでいきます。

実際に移行するならDocker Desktopから不要なイメージなど削除した上でやったほうが良さそうです。

エラーにならなかったものがあったので参考までに。

このプロジェクトのイメージは丸っと移行できました。

RSpecの実行速度を確認する

移行できたプロジェクトがあったのでそれで確認します。

まず一旦Docker DesktopでRSpecを実行してみます。

$ docker context use desktop-linux
$ time docker compose run --rm app rspec
〜中略〜
Executed in   17.45 mins      fish           external
   usr time  207.81 millis   53.00 micros  207.76 millis
   sys time  136.50 millis  310.00 micros  136.19 millis

3回実行してみて平均が17.12分でした。結構大きめのプロジェクトなので時間かかってますね。

次に、同じコマンドをOrbStackに切り替えて実行してみます。

$ docker context use orbstack
$ time docker compose run --rm app rspec
〜中略〜
Executed in  765.35 secs      fish           external
   usr time  171.05 millis   54.00 micros  171.00 millis
   sys time  136.27 millis  630.00 micros  135.64 millis

こちらも3回実行してみて平均が12.24分でした。約1.4倍高速になっています。

比較すると次のような感じです。

Docker Desktop OrbStack
1回目 17.45分 12.75分(765.35秒)
2回目 15.86分 12.08分(724.97秒)
3回目 18.06分 11.89分(713.34秒)
平均 17.12分 12.24分(734.55秒)

めちゃくちゃ早くなってます。素晴らしい…

ファイル変更検知の確認

Rancher DesktopからDocker Desktopに戻した最大の原因は「Railsアプリケーションでのファイル変更検知が正常に機能しない」でした。

Rancher DesktopからDocker Desktopに戻した話
割と以前書いたDocker DesktopからRancher Desktopに移行してDockerが高速になるか試す記事を見ていただいているようなので、現状もお伝えしないといけないかなと思い、この記事を書いています。 結論はタイトルにあるようにDocker Desktopに戻しました。 これから理由を書いていこうと思うのですが、全員に当てはまるかどうかは分からないです。 もしRacher Desktopにしてパフォーマンスが上がるかもしれないと考えるのであれば、一度試してみるのが良いかなと思います。 その時は休日など時間があるときにお試しください。 また、これはRancher Desktop v1.1.0の話です。それ以降のバージョンで改善されている可能性はあります。 最大の理由 『Railsアプリケーションでのファイル変更検知が正常に機能しない』 これです。 正確にいえば、時間がかかるだけで、待っていればそのうち変更が反映されるんですが、待つのが厳しかったです。 当時Twitterにつぶやいてました。 Rancher Desktopにしてから何か変な挙動を感じ

OrbStackにすることで1.4倍早くなったとしても、Rancher Desktopのときと同じでファイル変更検知が正常に機能しないのであれば使えないので確認しておきます。

結論としては、ちゃんとファイルの変更が反映されました。文章で表現するのが難しいので、とりあえず大丈夫だったことだけお伝えしておきます。

ちなみに、Reactのホットリロードもしっかり使えました。

既知の問題について

次の記事のような問題があったみたいですが、2024/07現在、自動的にTime Machineの対象から除外されるようになってるようです。

Docker Desktop for Macの代替ツールOrbStackを導入したら社内バックアップが停止してしまった話
IDチームの前田です。検証目的で気軽に開発用ツールを導入したら、社内全バックアップを止めてしまったという知見共…

さいごに

OrbStackを試してみて、率直な感想は「全員使おう!」でした。使って損がないので使わない選択肢はないと思います。

Docker Desktopと比較して約1.4倍の高速化を実現し、ファイル変更検知も正常に機能します。

たとえOrbStackで問題が起こったとしても、Docker Desktopと共存が可能で、切り替えも簡単なので、試してみる価値は十分にあると思います。

ビジネス利用の場合は年間96ドルの費用がかかりますが、その性能向上を考えると十分な価値があると思います。

OrbStackを使って、より効率的で快適なDocker環境を構築してみてはいかがでしょうか。それでは、良きDockerライフを!