エラーの概要コーディングを始めようとして docker ps や docker-compose up を実行した際、壁にぶつかることがあります。コンテナのリストが表示される代わりに、次のようなもどかしいメッセージが表示されます。
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
DockerエンジンはLinux固有のカーネル機能に依存しているため、macOS上ではネイティブに動作しません。このギャップを埋めるために、Docker Desktopはバックグラウンドで軽量なLinux仮想マシンを実行しています。このエラーは通常、CLIツールがその仮想マシンと通信しようとしているものの、応答がないことを意味します。
TL;DR: クイックフィックス- アプリを起動する: アプリケーションフォルダから Docker Desktop を開き、クジラのアイコンが静止するまで待ちます。- ソケットを確認する: ls -l /var/run/docker.sock を実行します。存在しない場合、Docker が完全に初期化されていません。- コンテキストをリセットする: docker context use default を実行して、無効なサービスを参照していないことを確認します。## 主な原因と解決策### 1. Docker Desktop が実際に起動していない多くの場合、解決策は単純です。単に Docker がアクティブになっていないだけです。Docker がシステムサービスとして自動起動することが多い Linux とは異なり、macOS では仮想化レイヤーを提供するために Docker Desktop アプリを開いておく必要があります。
ターミナルから次のコマンドで起動できます。
open /Applications/Docker.app
起動まで少し時間がかかります。M2 MacBook Pro の場合、通常エンジンの起動に 20 〜 30 秒かかります。古い Intel Mac の場合は 1 分ほどかかるかもしれません。エラーの代わりに docker info がテキストのブロックを返せば、準備完了です。
2. 「詳細(Advanced)」ソケット設定 (macOS Ventura & Sonoma)バージョン 4.13 以降、Docker Desktop はセキュリティ向上のため /var/run/docker.sock ファイルの扱いを変更しました。このファイルが見つからない場合、ターミナルはエンジンへの接続方法を認識できません。
Docker Desktop の Settings > Advanced に移動します。**「Allow the default Docker socket to be used」**という項目を探してください。チェックが入っていない場合は、チェックを入れて「Apply & Restart」をクリックします。すでにチェックが入っているのに失敗する場合は、一度オフにしてから再度オンにして、Docker にシンボリックリンクを強制的に再作成させてみてください。
3. コンテキストの不一致もし Colima、OrbStack、Minikube などの代替ツールを試したことがある場合、Docker CLI が間違った場所を参照している可能性があります。コンテキストを電話の連絡先と考えてください。CLI が「Docker Desktop」にかけるべきところを「Colima」にかけているような状態です。
現在アクティブな接続を確認します。
docker context ls
アスタリスク (*) が default 以外に付いている場合(かつ、そのツールを現在使用していない場合)は、元に戻します。
docker context use default
4. Colima ユーザーの場合: VM がスリープ状態Docker Desktop よりも軽量(通常約 2GB 使用)なため、メモリ節約のために Colima を使用する開発者も多いでしょう。しかし、再起動のたびに手動で起動する必要があります。
colima start
フリーズしたりソケットが反応しない場合は、強制再起動でキャッシュをクリアするのが一般的です。
colima stop
colima start --force
5. ゴースト環境変数古いセットアップスクリプトによって、シェルプロファイルに DOCKER_HOST 変数が残っていることがあります。これにより、Docker はローカルの Unix ソケットではなくネットワークアドレスを探しに行ってしまいます。隠れた設定がないか、次を実行して確認してください。
echo $DOCKER_HOST
もし tcp://localhost:2375 のような値が返ってきたら、クリアする必要があります。unset DOCKER_HOST を実行してください。恒久的に対応するには、.zshrc や .bash_profile を開き、その変数を export している行を削除します。
検証: 修正の確認修正を適用したら、接続テストを素早く行います。
docker ps
成功すると、きれいなテーブルヘッダーが表示されます。コンテナが実行されていなくても、列のタイトルが表示されれば通信ブリッジが復旧したことを意味します。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
さらに詳しく確認するには docker version を実行します。「Client」と「Server」の両方のセクションが表示されるはずです。「Server」セクションが表示されれば、無事に復旧です。

