株式会社メドレーDeveloper Portal

2025-03-25

Docker DesktopからOrbStackへ移行してみた

はじめに

こんにちは。人材プラットフォーム本部 第一開発グループの坂井(@Hiroshi_mars)です。 2024 年 12 月に主にバックエンドのエンジニアとしてメドレーに入社しました。 入社して日が浅いですが、この記事を通じて少しでもためになったりメドレーについて知っていただけたら嬉しいです。

今回、私は、Docker Desktop for Mac から OrbStack へ移行するプロジェクトを担当しました。以降、Docker Desktop は Docker Desktop for Mac を指します。

OrbStack とは

公式

OrbStack とは

OrbStack is the fast, light, and easy way to run Docker containers and Linux. Develop at lightspeed with our Docker Desktop alternative. (公式サイトから引用)

OrbStack は、Docker コンテナおよび Linux を高速かつ軽量に、容易に実行するためのツールです。 と書かれています。 Docker Desktop の代替として注目されています。

OrbStack の特徴

  1. Docker Desktop より高速で軽量
  2. 既存の Docker コマンドや docker-compose 系のコマンドも利用可能
  3. Docker Desktop からの移行が容易

CPU やメモリの使用量が抑えられ、既存の Docker コマンドとの互換性も高いため、移行や運用の負担が少ない点が大きなメリットです。

OrbStack へ移行した理由

大きく二点あります。

OrbStack へ移行した理由 その 1

【OrbStack と Docker Desktop の商用利用の料金差】

今まで Docker Desktop のDocker Teamのプランで商用利用していました。しかし、ありがたいことに開発メンバーが増加し、管理できるアカウント数の上限を超えてしまいそうになりました。

Docker Desktop のプランをDocker TeamからDocker Businessに上げると 1 ユーザーあたりの月額利用料が 15 ドルから 24 ドルに増加します。 そのため、「プランのランクを一つ上に上げる」or「別のツールに移行する」という選択がありました。

「プランのランクを一つ上に上げる」のも可能ではありましたが、OrbStack へ移行した理由 その 2に記載されている通りどうやら移行難易度や工数コストが低そうということもあって、「別のツールに移行する」選択をとりました。

cost comparison

この判断はメドレーの行動原則である(Our Essentials)の中の『日々の倹約と大胆な投資の両立』に適っています。 無駄なコストを落とせるのなら落とし、落とした分だけ別の大胆な行動に利用する。そういった行動原則に基づいた動きでもあったかと思います。 逆に、移行による工数コストがかなり高かった場合、Docker Desktop のプランを上げる方針になっていた可能性もあります。

OrbStack へ移行した理由 その 2

【OrbStack へ移行が容易】

ブログなどの各種情報源において、OrbStack への移行手順は容易であり移行にかかる工数が低いことが報告されています。

他ブログの一例: https://qiita.com/shoki-y/items/4b8e48a525062a8ec9ad

また、社内の別プロダクトで既に移行した実績がありました。 社内の別プロダクトの技術スタックは、今回の移行対象と近しいものでした。

そのため、社内の別プロダクトの移行を行なった方にヒアリングした際も移行コストが小さいことがわかりました。

移行作業に伴う環境差異やそれに伴う工数負担は大きな課題となりやすいですが、OrbStack ではそれらの負担が少ないことが社内、社外の知見調査によって見込まれたため、移行を決断するに至りました。

OrbStack への移行手順

1. OrbStack をインストール

インストール方法は 2 種類あります。

  1. Homebrew を使ったインストール
brew install orbstack

2.公式サイトから dmg 形式のファイルをダウンロードする

2. OrbStack の起動

インストール後、Finder のアプリケーションから OrbStack のアイコンを探し、クリックし起動。起動後、以下のような画面が出てきます。 OrbStack menu Docker, Kubernetes, Linux どれを利用するのか選択します。 今回は、Docker Desktop から OrbStack に移行するので、Docker を選択します。

OrbStack top Docker を選択すると上記のようなトップ画面が出ます。

3. Docker Desktop から OrbStack へコンテナやイメージの情報を移行する

2 種類方法があります。

  1. トップ画面に表示されている"Migrate from Docker Desktop”をクリックする
  2. 上部メニューから”File”->“Migrate Docker Data”をクリックする Docker Desktop 上のコンテナ、ボリューム、イメージが OrbStack に移行されます

*2 のメニューについての画面 migrate menu

migrate した後、下記のようなポップアップが出ることがあります。 migrate error mosaic

内容はモザイクをつけていますが、下記のようなログが出力される場合があります。

container /~: create container: [Docker] No such image: ...

これは、一部のコンテナやイメージの移行に失敗していることを示しています。

今回の移行に関してはこのエラーメッセージを migrate 時に解消しなくても問題ありませんでした。理由としては、エラー対象が自身で以前作成したデータなどが migrate できなかったのみで、後ほど再度作成すればよかったためです。

4. Docker コンテキスト情報の確認と変更

migrate が完了したら、"Docker Desktop"と"OrbStack"どちらを利用して Docker Daemon にアクセスするのか確認する必要があります。

次のコマンドでコンテキストを確認します。

docker context ls

出力例:

$ docker context ls
NAME         DESCRIPTION                               DOCKER ENDPOINT                                         ERROR
default      Current DOCKER_HOST based configuration   unix:///hogehoge
orbstack *   OrbStack                                  unix:///hogehoge

"*"が今利用しているコンテキストになります

"Docker Desktop" が利用されている場合は次のコマンドで OrbStack に変更します。

docker context use orbstack

出力例:

% docker context use orbstack
orbstack
Current context is now "orbstack"

5. Docker コンテナの立ち上げ

Docker コンテナを起動して、正常に移行できたことを確認します。 完全に移行が完了したら Docker Desktop を削除しても問題ないかと思います。

コンテナの起動方法は各自の利用環境に応じて手順が異なるため、本稿では詳細を割愛します。

ハマりポイントや苦労した点

少しハマったポイントや苦労した点などを記載しています。ご参考になれば幸いです。

Docker Network 周りのエラー

Docker Desktop でコンテナを立ち上げて、作業していた場合、Docker Network を多かれ少なかれ利用されているかと思います。

Docker Desktop で作成していた Docker Network が存在していた場合、OrbStack で Docker Network を作成しようとすると同じ Docker Network を作成することになってしまい、ネームの被りなどが発生することがあります。 そのため、次のコマンドで Docker Network を確認します。

docker network ls

不要なネットワークが存在していた場合、次のコマンドで削除します。

docker network rm Hogehoge

マルチビルド周りのエラー

先ほど記載したDocker_Network 周りのエラーと似たようなエラーになります。

Docker Desktop で作成済みのマルチビルド環境が OrbStack と競合する場合があります。その場合は既存のマルチビルド環境を削除し、OrbStack で新規にマルチビルド環境を構築することで問題を解消できます。

エラー内容

error: Error response from daemon: Conflict. The container name "multibuild" is already in use by container "container_id". You have to remove (or rename) that container to be able to reuse that name.

次のコマンドで、新たにマルチビルドを作成して利用できます。

docker buildx rm multibuild
docker buildx create --name multibuild_new_type
docker buildx use multibuild_new_type

コンテナとローカルのファイル差分が更新されない問題

通常であれば、Volume を設定していれば、ローカルでファイルを新たに作成したり、mv, cp 等のコマンドでファイルを移したり、ファイル内を書き換えても Docker コンテナ内のファイルも更新されるかと思います。 それが今回、Docker コンテナ内でファイルが更新されない問題が起きていました。

こちらの問題は、原因追及にかなり苦労しました。

調査の結果、以前から利用していた docker-sync が OrbStack への移行後に正常に動作していないことがわかりました。

docker-sync とは、Docker 環境でローカルとコンテナ間のファイル同期を高速化するためのツールです。

原因の切り分けには苦労しましたが、次の手順で特定できました。

  • 先行して OrbStack に移行していた別部署の方と連携を取り、両者の環境の違いを聞いた中で docker-sync の利用の有無が挙げられた
  • ファイルの更新が反映されない問題であったため、ファイル同期を最適化する docker-sync が原因ではないかと推測した
  • docker-sync を使用しない環境で検証して問題の解消を確認した

そのため、OrbStack への移行を機に docker-sync の利用をやめることで コンテナとローカルのファイル差分が更新されない問題を解決しました。

移行後の OrbStack の使用感

  • Docker Desktop より UI などがシンプルであり、操作が容易です。
  • migrates するだけで OrbStack に移行できる手軽さがよかったです。
  • 商用利用の料金も Docker Desktop のプランをあげるより利用料が抑えられるので、良いかと思います。

まとめ

OrbStack 移行を実際にやってみて、思っている以上に容易に移行できたと実感しました。

もちろん Docker Desktop も良いかと思いますが、速度や利用料などを加味して、移行の選択肢として OrbStack も入ってきそうな気がしています。 また、OrbStack を実際に使ってみてください。実際に利用することでわかることが多く出てくるかと思います。

We’re hiring

メドレーでは一緒に働く仲間を大募集しています! カジュアル面談も実施しておりますので、お話しだけでも聞いてみたい!ちょっと雑談してみたい!でも構いませんので、お気軽にお問い合わせください!

募集の一覧 https://www.medley.jp/jobs/

医療エンジニアリング領域盛り上がっています!メドレーについてお話します! https://pitta.me/matches/BtcyDvCvUZtx

メドレーの開発チームについて知りたい方!ぜひお話ししましょう! https://pitta.me/matches/sNeEHMdSLZpB

株式会社メドレーDeveloper Portal

© 2016 MEDLEY, INC.