Macに、Docker DesktopなしでDocker環境を構築する方法
はじめに
筆者の環境は次のとおり。
- OS: Mac OS 26 Tahoe
- Mac: MacBook Air M1 (Apple Sillicon)
- Homebrew 5.0.15
Dockerは便利であるという話
Dockerの価値は、環境をコードとして扱える点だ。
- 開発環境と本番環境の差分を減らす
- 依存関係をプロジェクト単位で閉じ込める
- 壊して作り直すことを前提にできる
一度この運用に慣れると、Dockerなしでの開発には戻れなくなる。
特に、ホスト側にあれこれSDKやらパッケージマネージャを入れるのが面倒になって、一旦Docker上で作っておくかという思考になる。
問題は、MacでどうDockerを動かすか、という点。
Docker Desktopがあるのに、なぜ使いたくないか
Docker Desktopは便利だが、使いたくない理由がある。
ライセンスの問題
従業員数250人以上、または年間売上1,000万ドル以上の企業では、Docker Desktopの使用が有料となっている。
しかし肝心のDocker EngineはApache-2.0ライセンスで問題なく無償利用することが可能だ。
よって、業務ではDocker Engineだけを使うことが多い。
またローカルだけDocker Desktop、本番はDocker Engineというのも、何とも気分が良くない。
常駐プロセスの多さ
Docker Desktopは、バックグラウンドで多くのプロセスが常駐する。
「使っていないのに重たい」
という状態が発生する。
ブラックボックスなVM
Docker Desktop内部で動いているVMの実態が見えにくい。何が起きているのかわからない環境は、なるべく避けておきたい。
推奨構成はColima × Docker Engine
結論はシンプル。
Colima × Docker Engine (CLI)
- Docker Desktopは使わない
- Docker CLIのみをインストール
- VM管理はColimaに任せる
軽量で挙動がわかりやすい。また、業務環境にも近くなるはずだ。
なぜColimaが必要なのか?
DockerはVM技術ではない。
Linuxカーネルの機能を使うコンテナ技術。
一方で、macOSのカーネルとLinuxのカーネルは完全に別物。
そのため、MacでDockerを使うには、
- Mac上でLinux VMを起動
- VM上でDocker Engineを動かす
という構成が必須になる。
LimaとColima
Apple Sillicon対応の軽量仮想化ツールとしてLimaというものがある。
これをラッパーして面倒な設定などをコマンド一つで管理できるのがColimaだ。
これで必要な時だけVMを起動することができる。
セットアップ手順
この手順ではHomebrewが使えることを前提としている。
Colimaのインストール:
brew install colimaDocker CLI/Docker Composeのインストール:
brew install docker docker-composeこれで一応最低限インストールは出来たのだが、この状態ではまだdocker composeサブコマンドが使えない。
そこで、Docker CLIプラグイン用のディレクトリを作成し、手動でシンボリックリンクを貼る。
# CLIプラグイン用のディレクトリを作成
mkdir -p ~/.docker/cli-plugins
# brewで入れたdocker-composeへシンボリックリンクを張る
ln -sfn $(brew --prefix)/bin/docker-compose ~/.docker/cli-plugins/docker-composeColima上でDockerを起動する
Colimaを起動。
colima start初回はLinuxイメージのダウンロードが走るはずなので、少し待つ。
次にバージョン確認。
docker -v
# 出力例→ Docker version 29.1.2
docker compose version
# 出力例→ Docker Compose version 5.0.0最後に、簡単な動作確認。
docker ps
# 出力→ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES作業終了後は、Colimaを停止してリソースを解放してあげると良い。
colima stopもし起動状態を調べたければ、確認可能。
colima status最後に
この構成で、Apple SilliconのDocker DesktopなしのDocker環境を構築することができる。
Docker Desktopが悪いわけではないが、
- 何が動いているかを把握できる環境
- リソースを自分で管理できる環境
を好むなら、Colimaという選択はかなり有用だ。