【Mac】OrbStackでDocker動作環境を構築する方法

当サイトはPR広告を利用しています。

M2チップ搭載のMac miniを新しく購入したのでDockerを快適に利用できる環境を構築したいと思い、軽量と評判のOrbStackでDockerが動作する環境を構築しました。OrbStackの公式ページに従って構築していますが、一部公式ページには説明が載っていないところもあったの補足説明しながら進めます。

OrbStackとは

最初にOrbStackとは何かについてと、利用するメリットについてお伝えします。構築手順のみ知りたい方はこの章は飛ばしてください。

OrbStackはDockerコンテナとLinuxの動作環境を作成するツールで、高速・軽量・容易な操作が売りです。

公式ページより

公式ページに記載されているOrbStackの良い点のリストは以下です。(一部意訳)

  • 数秒での高速起動が可能
  • 低CPU利用率
  • 低ディスク利用率
  • バッテリー消費が少ない
  • Docker Desktopの完全互換(比較表:OrbStack vs. Docker Desktop · OrbStack Docs
  • VPNやDNSが使われている環境でも動作する

使う上での注意点

OrbStackは基本有料です。かつてベータ版として提供されていた時は完全無料だったのですが、もうベータ版ではなくなりました。なのでビジネス利用や商用利用の場合は有料です。非営利団体の場合でも課金が必要です。(2024年4月現在 一人当たり月8ドル)

個人利用の場合は無料です。教育目的での利用や非営利目的でのオープンソース開発の場合は、承認を受ける必要があります。

詳細を知りたい方は以下のページをご確認ください。
Frequently asked questions · OrbStack Docs

環境構築手順

Homebrewを使ってOrbStackをインストールする方法を説明します。(使えない方はこちらのページからOrbStackをダウンロードしてください。ダウンロードしたファイルを開けばOrbStackを利用するための準備は完了です。)

ターミナルを開いて以下のコマンドを実行します。

brew install orbstack

実行後以下のメッセージが出力されていたら問題なくインストールできています。

orbstack was successfully installed!

私の場合は以下の出力になっていました。

ringo@ringonoMac-mini ~ % brew install orbstack
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
Updated 4 taps (homebrew/cask-versions, homebrew/services, homebrew/core and homebrew/cask).
==> New Formulae
beakerlib                      ffmpeg@6                       kubecolor                      manim                          oj                             ratchet                        tartufo
beancount-language-server      git-split-diffs                lexido                         mantra                         overarch                       redict                         uni-algo
c-blosc2                       gitu                           liblc3                         mdformat                       parsedmarc                     rtabmap                        valkey
cotp                           ingress2gateway                libscfg                        morpheus                       policy_sentry                  rustcat                        vfox
descope                        jnv                            llvm@17                        msieve                         protoc-gen-js                  superfile                      whisperkit-cli
dissent                        jtbl                           logdy                          navidrome                      rage                           sysaidmin                      yo
==> New Casks
ableton-live-intro11           cahier                         fujifilm-x-raw-studio          instantview                    obs-backgroundremoval          requestly                      yandex-music
ableton-live-lite11            capcut                         galaxybudsclient               ireal-pro                      oracle-jdk21                   starnet2                       yes24-ebook
ableton-live-standard11        clearvpn                       godspeed                       irpf2024                       outfox                         steinberg-activation-manager
arctic                         corretto21                     graalvm-jdk21                  juxtacode                      paragon-extfs11                timelapze
arm-performance-libraries      darkmodebuddy                  halloy                         lookaway                       phoenix-code                   toneprint
automattic-texts               ente-auth                      hhkb-studio                    loungy                         posture-pal                    viable
boltai                         flox                           ibkr                           nperf                          proton-mail                    xcodepilot

You have 3 outdated formulae installed.

==> Caveats
Open the OrbStack app to finish setup.

==> Downloading https://raw.githubusercontent.com/Homebrew/homebrew-cask/1142e564c1d8538a54fe7cc5acd06fc776274a81/Casks/o/orbstack.rb
################################################################################################################################################################################################################# 100.0%
==> Downloading https://cdn-updates.orbstack.dev/arm64/OrbStack_v1.5.1_16857_arm64.dmg
################################################################################################################################################################################################################# 100.0%
==> 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!
==> `brew cleanup` has not been run in the last 30 days, running now...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /Users/ringo/Library/Caches/Homebrew/openssl@3--3.2.1... (9.4MB)
Removing: /Users/ringo/Library/Caches/Homebrew/zstd--1.5.5... (721.7KB)
Removing: /Users/ringo/Library/Logs/Homebrew/openssl@3... (64B)
Removing: /Users/ringo/Library/Logs/Homebrew/ca-certificates... (64B)
Removing: /Users/ringo/Library/Logs/Homebrew/mysql... (1.3KB)
ringo@ringonoMac-mini ~ %

あとは利用するだけです。とてつもなく簡単ですね。

OrbStackを通したDocker利用方法

インストール直後の場合、dockerコマンドがまだ使えません。dockerコマンドを実行しても以下のようなエラーが出力されてしまいます。

ringo@ringonoMac-mini ~ % docker
zsh: command not found: docker
ringo@ringonoMac-mini ~ %

まずはOrbStackを起動させる必要があります。LaunchpadにOrbStackが追加されているはずなので起動してください。OrbStackを起動すると以下のような画面になります。

Nextボタンをクリックすると以下の画面になります。OrbStackで何を利用したいのか問われており、今回はDockerを利用したいのでDockerを選択します。後から変更することも可能なので気軽に選んで問題ないです。

Dockerを選択するといくつかの画面が開きます。一つ一つ説明していきます。まずは以下の画面について。

dockerのCLIツールのインストールとDockerソケットの互換性改善をするかを聞かれています。今回はdockerコマンドを利用できるようにしたいのでユーザーのパスワードを入力後「ヘルパーをインストール」をクリックします。

次に以下の画面について。

私の場合は書類フォルダなどをiCloudを利用する形に設定しているので、許可をしました。

ここまで完了したらターミナルに戻ります。ターミナル上で以下のコマンドを実行してdockerコマンドを利用できるか試してみましょう。

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

このコマンドは"docker/getting-started"というDockerイメージからDockerコンテナを作り、Macの80番ポートをコンテナの80番ポートと紐づけるものです。

実行に成功すると以下のような出力があります。

ringo@ringonoMac-mini ~ % docker run -it -p 80:80 docker/getting-started
Unable to find image 'docker/getting-started:latest' locally
latest: Pulling from docker/getting-started
261da4162673: Pull complete 
a60aada4c44a: Pull complete 
2f61404bb4b8: Pull complete 
fa3f58a317be: Pull complete 
476bb2a1cc22: Pull complete 
33a28b928e89: Pull complete 
a879581b8e12: Pull complete 
d0193f05f10f: Pull complete 
14f901bbf056: Pull complete 
Digest: sha256:d79336f4812b6547a53e735480dde67f8f8f7071b414fbd9297609ffb989abc1
Status: Downloaded newer image for docker/getting-started:latest
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/04/22 16:26:25 [notice] 1#1: using the "epoll" event method
2024/04/22 16:26:25 [notice] 1#1: nginx/1.23.3
2024/04/22 16:26:25 [notice] 1#1: built by gcc 12.2.1 20220924 (Alpine 12.2.1_git20220924-r4) 
2024/04/22 16:26:25 [notice] 1#1: OS: Linux 6.7.11-orbstack-00143-ge6b82e26cd22
2024/04/22 16:26:25 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/04/22 16:26:25 [notice] 1#1: start worker processes
2024/04/22 16:26:25 [notice] 1#1: start worker process 30
2024/04/22 16:26:25 [notice] 1#1: start worker process 31
2024/04/22 16:26:25 [notice] 1#1: start worker process 32
2024/04/22 16:26:25 [notice] 1#1: start worker process 33
2024/04/22 16:26:25 [notice] 1#1: start worker process 34
2024/04/22 16:26:25 [notice] 1#1: start worker process 35
2024/04/22 16:26:25 [notice] 1#1: start worker process 36
2024/04/22 16:26:25 [notice] 1#1: start worker process 37

私の環境では"docker/getting-started"というDockerイメージが存在していなかったので、Dockerイメージをプルしてからコンテナを立てる挙動になっています。

今ローカルホストの80番ポートにアクセスすれば構築したDockerコンテナの80番ポートに対してアクセスできるので試してみます。

safariやchromeなどのブラウザを開いてURL欄に「localhost:80」と入力してEnterを押してください。

以下の画像のようなDockerの入門ページが開かれたと思います。

問題なくDockerが使える状態になっていることを確認できましたね。

Tips

OrbStackは単純にDockerのコマンドを利用可能にするだけではなく、OrbStackのGUIからDocker関連の管理を容易に行えるようにしてくれます。

例えば以下の画面がありますが、真ん中のDockerコンテナ名の右にあるアイコンで、コンテナへのWebアクセス、コンテナ内のファイルのGUI操作、コンテナの停止、コンテナの削除が可能です。

他にもGUIで操作できる項目はたくさんあるので、色々試してみてください。

特にファイル操作はdocker cpなどのCLIを使わなくて済むのでとてもありがたいです。

まとめ

OrbStackを利用できるようにするところから、OrbStackを利用してDockerコンテナを構築しアクセスできるところまで試しました。今のところ操作はかなり軽量だったために開発が捗りそうです。

また気になるソフトウェアやOrbStackの良い機能が見つかったら紹介しますね。

直近でおすすめの本

直近十数冊読んだ中で一番おすすめの本です。

人が行動をするに至るまでのステップを科学的に分析した上で、その結果を習慣と紐付けて解説してくれている本です。

悪い習慣を断ち、良い習慣を継続する方法を詳細に説明してくれています。習慣が人を作っているので、この本の内容を実践できれば人生を大きく好転させられる気がしました。

この本の最初の方に説明があるのですが、複利という考え方があり毎日1パーセントだけの増加でもそれが続くととてつもない倍率になります。これは投資でよく用いられる概念ですが、良い習慣は未来への投資なので習慣にもあてはまります。良い習慣を身に付けるのは早ければ早いほど良いです。

私はまず長時間YouTubeを見てしまう習慣を断って、直近の業務に役立つITの勉強を習慣として身に付けよう思います。

DockerOrbStack

Posted by ラプラス