🌏

OrbStack使ってみた

2023/04/08に公開

「OrbStack」とは

What is OrbStack?

OrbStack is a fast, light, and simple way to run Docker containers and Linux machines on macOS. You can think of it as a supercharged WSL and Docker Desktop replacement, all in one easy-to-use app.

OrbStack は、macOS で Docker コンテナと Linux マシンを実行するための高速で軽量、
かつシンプルな方法です。
これは、使いやすい 1 つのアプリにまとめられた、強化された WSL と Docker Desktop の代替品と
考えることができます。

※ powered by Google翻訳

ざっくり読むと、「Docker Desktop for Macの代わりに使えてついでにWSLみたいに macOS 上で Linux VM を扱うことができるアプリケーション」といったところでしょうか。

Docker の代替としては AWS がリリースしている finchも気になっていますが、私としてはちょっとまだ二の足を踏んだりしています。
というのも下記の記事を拝見すると、昨年末の状況ではありますが finch では VSCode の 「Dev Container」 が扱えないようなのです。

ところが、上記 OrbStack の document をつらつらと読んでいましたら力強く下記のような記述が。

Third-party tools

Since OrbStack provides a standard Docker engine with a highly-compatible setup similar to Docker Desktop, it should be compatible with all third-party Docker tools. For example, Earthly and Dev Containers have been confirmed to work out of the box.
If you run into any trouble with third-party tools, please open an issue and we'll do our best to help.

OrbStack は、Docker Desktop に似た互換性の高いセットアップを備えた標準の 
Docker エンジンを提供するため、すべてのサードパーティの Docker ツールと互換性があるはずです。
たとえば、Earthly および Dev Containers はそのままで動作することが確認されています。

※ powered by Google翻訳

Dev Containers はそのままで動作する

な、なんだと・・・!?

というわけで

試してみました。以下、ダウンロードからインストール、そして手元の Dev Container が見事 OrbStack 上で動くまでの記録です。

OrbStack のトップページを開きます。ダウンロードは右上の「Download」から。

top

CPUアーキテクチャを選んでクリックすると、ダウンロードが始まります。

download

実はこのページ、一番下に気になる記述が・・・

Free during beta

「ベータ版のうちはフリーだよ」とのことで、公式のFAQによれば将来的には有料の製品とするとのこと。(そりゃそうだ)
ただし、有料化にあたってはさまざまな方針を検討していて、launch が近づき次第、情報が提供されるようです。

Is OrbStack free?

OrbStack is completely free to use during beta, but it will become a paid product afterwards. We're still working out the details (personal vs. business use, subscription vs. perpetual license, pricing, OSS and student discounts, etc.) and will share more information as we get closer to launch.

OrbStack は、ベータ期間中は完全に無料で使用できますが、その後は有料の製品になります。 
詳細 (個人使用とビジネス使用、サブスクリプションと永久ライセンス、価格設定、OSS および学生割引など) 
についてはまだ検討中であり、ローンチが近づき次第、より多くの情報を共有します。

ダウンロードの際、stable release のお知らせを含めてニュースの配信を希望するかどうかのダイアログが表示されます。
Sign up しないとダウンロードできないといったことはないので、よしなにしていいようです。

sign up

ダウンロードされてくるのはおなじみのdmgファイルなので、アプリケーションへずずいとドラッグしてインストールします。

install

これでインストールが完了したわけですが、私はここでいったん Docker Desktop を終了させておきました。
起動するときに変に怒られてもイヤだったので・・・(小心者)

OrbStack を起動すると introduce が表示されます。「早い!うまい!安い!」「速い!軽い!シンプル!」

starting

上の画面で「Next」をクリックすると、主に Docker engine として使うか、 Linux VM として用いるかを選べます。
もちろん後から選び直すこともできます、というかどっちにも使うことができるようです。

select feature

起動しました!

started

GUIはさておき、Docker の代わりに使えるというふれこみなので、おもむろにターミナルを開き、dockerコマンドを打ってみます。
先述のとおり Docker Desktop は起動していないので、普通なら「そんなコマンドないよ」と怒られるはずですが・・・

docker ps

なにもコンテナを立ち上げていないので空っぽですが、コマンドは実行できたようです!(地味)

さらに手元の Dev Container をVSCodeから実行してみます。
私がZennの執筆環境として使っている Dev Container を使ってみました。Dockerfile の内容は下記のような感じです。

FROM node:lts-bullseye-slim AS dev
RUN apt update && apt install git vim xclip -y && apt clean
RUN yarn global add zenn-cli textlint

ENV COMMAND_PATH /home/node/command
ENV WORK_PATH /home/node/workspace

USER node

WORKDIR $COMMAND_PATH
COPY command/ $COMMAND_PATH

WORKDIR $WORK_PATH

RUN { \
    echo "source /usr/share/bash-completion/completions/git"; \
    echo "export PATH=$HOME/command:$PATH"; \
} >> ~/.bashrc

Dev Container としてビルドしようとすると、いくつかダイアログが表示されました。パスワードは入力し、OKできるものはOKしておきます。

credential
allow access

Dev Container が起動しました。remote 名の表示部分を見ると、@ orbstackと書かれています。おお・・・

devcontainer

GUIの方に戻ると、起動中のコンテナが表示されています!

containers

右クリックでなんかできそうだったのでちょっとさわってみます。

context menu

コンテナにマウントされているディレクトリを直接 Finder で表示できるっぽいです。

finder

まとめ

OrbStack で Dev Container 、問題なく使えそうでした!
せっかくなのでしばらくは Docker Desktop をお休みして、 OrbStack 環境で作業してみようと思います。
アップデートなどでまた新たな知見がありましたら報告します。

気づいたこと

私の場合、普段はコマンドで docker を操作しているので問題ないと言えばないんですが、Docker Desktop にあったアレが見当たらないなあ、みたいな気づきをいくつか書いておきます。
※記事執筆時点(2023/04/07:Version 0.6.0 (1088))の状況です。

イメージの一覧が見れない

起動したコンテナは表示されますが、停止中のコンテナやイメージの一覧を表示する機能は今のところ無いようでした。

docker logsが見れない

これもターミナルに出力させればいい話ではありますが・・・複数のコンテナを行ったり来たりしている場合などにちょっと便利なあの機能も、まだ無いようです。

macOSのメニューバーに常駐させられない

ウィンドウを最小化することはできますが、メニューバーに隠すことはできないようでした。

なお、ここで書いたいくつかの気付きはすでにロードマップにissueとして挙げられておりまして、少なくとも有償化までのどこかのタイミングで実装されるだろうことが期待されます。

最後まで読んでいただきありがとうございました。

ではまた!

Discussion