はじめに
Mac で Docker を利用する際、最も一般的な選択肢は「Docker Desktop for Mac」です。
しかし、以下の理由からデスクトップ版を使わずに環境を構築したくなる場合があります。
- ライセンス制限: 企業の規模によっては有料ライセンスが必要になる
- リソース消費: GUI が含まれるため、メモリや CPU の消費が激しく、PC の動作が重くなりがち
- バックグラウンド動作: 使っていない時も多くのプロセスが常駐し、バッテリーを消耗させる
本記事では、オープンソースのコンテナランタイム Colima を使った Docker 環境の構築手順をまとめます ✍️
1. 必要なツールのインストール
ターミナルを起動し、Homebrew で以下の3つのパッケージをインストールします。
brew install docker docker-compose colima
- docker: Docker CLI(Docker Engine と通信するためのインターフェース)
- docker-compose: 複数コンテナを管理するツール
- colima: macOS 上で動作する軽量なオープンソースのコンテナランタイム(GitHub)
Docker は Linux カーネルに依存します。
Colima は Linux 仮想マシン(Lima)をラップして、Docker Engine のインストールと設定を自動でやってくれる便利ツールです。
2. Docker Compose をサブコマンドとして登録する
環境によっては、Homebrew でインストールしただけでは docker compose(スペース区切り)を使えない場合があります。
Docker CLI のプラグインとして認識させるためにシンボリックリンクを貼ります。
mkdir -p ~/.docker/cli-plugins
ln -sfn $(brew --prefix)/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose
Docker CLI のプラグインを手動でインストールする場合、~/.docker/cli-plugins/ にインストールします。
しかし、この方法では、パッケージが自動アップデートされません。
(Install the Compose plugin | Docker Docs)
そこで、パッケージのアクティブバージョンへのシンボリックリンク(/opt/homebrew/opt/docker-compose)へのシンボリックリンクを貼ります。
こうすることで、Homebrew にパッケージのバージョン管理を任せたまま Docker Compose を使えるようになります。
(Formula Cookbook | Homebrew Documentation)
3. Colima の起動
Colima を起動します。
colima start
4. 動作確認
Docker と Docker Compose が正しくインストールされているか確認します。
バージョン情報が返ってきたら成功です。
docker version
docker compose version
ついでに、コンテナを起動できるか hello-world イメージを使って確認します。
"Hello from Docker!" と表示されれば成功です。
docker container run hello-world
5. 後片付け
不要になったコンテナを削除します 🧹
5.1 コンテナの確認・停止・削除
# 1. コンテナの状態を確認
docker container ls -a
# 2. コンテナの停止
docker container stop [CONTAINER_ID]
# 3. コンテナの削除
docker container rm [CONTAINER_ID]
5.2 Colima の停止
colima stop
トラブルシューティング 🔫
外部ツールから Docker を使う際、以下のようなエラーが出ることがあります。
以下は AWS SAM を使って Lambda のローカルテストを実行しようとした際のエラーです。
Error: Running AWS SAM projects locally requires a container runtime. Do you have Docker or Finch installed and running?
Docker Desktop と Colima では、Docker エンジンと通信するための窓口であるソケットファイルを作成する場所が異なります。
外部ツールがデフォルトの場所(/var/run/docker.sock)を探しに行ってしまい、Colima の窓口を見失っている状態です。
環境変数 DOCKER_HOST を設定し、Colima のソケットファイルの場所を明示的に教えてあげます。
# ~/.zshrc に追記して永続化
echo 'export DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock"' >> ~/.zshrc
# 設定を現在のシェルに反映
source ~/.zshrc
おわりに
個人的に Docker Desktop で GUI 操作したい場面がなかったため、不要な常駐アプリを入れずに済むのは助かります 😌