「Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?」は、docker コマンド(クライアント)が、Docker の本体(デーモン:dockerd)に接続できなかったときに出るエラーです。 docker コマンドは、デーモンに指示を送るだけのプログラムなので、デーモンにつながらないと何もできません。

原因は次の4つに分けられ、エラー文の形で、どれかをほぼ見分けられます。

エラー文 原因 直し方
failed to connect to the docker API at unix:///var/run/docker.sock; ... no such file or directory デーモンが動いていない(ソケットのファイルが無い) デーモンを起動する(例1)
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? デーモンが動いていない(ソケットのファイルだけ残っている)、または TCP の接続先につながらない 同上・例3
permission denied while trying to connect to the docker API at unix:///var/run/docker.sock 権限が無い(docker グループに入っていない) docker グループに追加する(例2)
接続先が tcp://... や別のパス(.colima・.docker/run など)になっている 接続先の設定が違う(DOCKER_HOST・コンテキスト) 接続先を確認する(例3)

確認環境:Ubuntu 24.04、Docker Engine・CLI 29.4.3(確認日 2026年10月10日)。デーモンを止める・ソケットのファイルだけを残す・一般ユーザーで実行する・接続先を変える、の4通りで実際にエラーを出しました。Mac・WSL2 の部分は公式ドキュメントで確認しています。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Cannot connect to the Docker daemonの原因と直し方」

まず「どこにつなごうとしているか」を見る

エラー文の at の後ろが、docker コマンドが接続しようとした場所です。

接続先 意味
unix:///var/run/docker.sock Linux の標準の場所。Docker Engine を Linux に直接入れた場合
unix:///Users/名前/.docker/run/docker.sock など Docker Desktop(Mac)
unix:///Users/名前/.colima/default/docker.sock Colima(Mac)
tcp://127.0.0.1:2375 など 環境変数 DOCKER_HOST で TCP を指定している
$ docker context ls
NAME        DESCRIPTION                               DOCKER ENDPOINT                                ERROR
colima                                                unix:///home/dev/.colima/default/docker.sock
default *   Current DOCKER_HOST based configuration   unix:///var/run/docker.sock

docker context ls で * が付いているのが、今使っている接続先です。つなごうとしている場所が想定と違えば例3、合っていれば例1か例2です。

例1:デーモンが動いていない

デーモン(dockerd)を止めて docker ps を実行しました。

$ docker ps
failed to connect to the docker API at unix:///var/run/docker.sock; check if the path is correct and if the daemon is running: dial unix /var/run/docker.sock: connect: no such file or directory

Docker 29 の docker コマンドでは、ソケットのファイルが無いとき、この表示になりました。デーモンが異常終了してソケットのファイルだけが残っているときは、よく知られた表示になりました。

$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

どちらもデーモンを起動すれば直ります。

環境 起動のしかた 自動で起動する設定
Linux(systemd) sudo systemctl start docker sudo systemctl enable docker.service containerd.service
Linux(systemd なし、WSL2 の初期設定など) sudo service docker start WSL2 は systemd を有効にする(下記)
Mac・Windows(Docker Desktop) Docker Desktop を起動し、クジラのアイコンが「running」になるまで待つ Docker Desktop の設定で「ログイン時に起動」
Mac(Colima) colima start ―

起動しない場合は、デーモンのログで原因を確認します。

sudo systemctl status docker      # 状態と直近のログ
sudo journalctl -u docker -n 50   # ログを50行

WSL2 で毎回止まっている

WSL2 の Ubuntu に Docker Engine を直接入れた場合、systemd が無効だと、WSL を起動し直すたびにデーモンが止まった状態になります。/etc/wsl.conf で systemd を有効にすると、systemctl で自動起動を設定できます。

# /etc/wsl.conf
[boot]
systemd=true

設定した後、PowerShell で wsl.exe --shutdown を実行して WSL を再起動します。Docker Desktop の WSL 統合を使う場合は、Docker Desktop を起動し、設定の「Resources」→「WSL integration」で使うディストリビューションを有効にします。

例2:permission denied(docker グループに入っていない)

一般ユーザー(dev)で実行しました。

$ docker ps
permission denied while trying to connect to the docker API at unix:///var/run/docker.sock

ソケットのファイルは、root と docker グループだけが読み書きできる設定になっています。

$ ls -la /var/run/docker.sock
srw-rw---- 1 root docker 0 Oct 10 20:53 /var/run/docker.sock

直し方:ユーザーを docker グループに追加し、ログインし直します(追加しただけでは、今のターミナルには反映されません)。

sudo usermod -aG docker $USER
# ログアウトしてログインし直す(または、今のターミナルだけ newgrp docker)
$ id -nG
dev docker
$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
やり方 問題
毎回 sudo docker ... で実行する 作ったファイルの所有者が root になる。docker compose の設定ファイルも root で読まれる
sudo chmod 666 /var/run/docker.sock すべてのユーザーが Docker を操作できるようになる。デーモンの再起動で元に戻る
docker グループに追加 公式ドキュメントの方法。ただし docker グループは root と同等の権限を持つ

docker グループに入ったユーザーは、コンテナを通じてホストのファイルを root として扱えます。共用のサーバーでは、グループに入れる人を限ります。root を使わずに動かす「rootless モード」もあります。

例3:DOCKER_HOST・コンテキストの接続先が違う

環境変数 DOCKER_HOST が設定されていると、そこに接続しにいきます。

$ DOCKER_HOST=tcp://127.0.0.1:2375 docker ps
Cannot connect to the Docker daemon at tcp://127.0.0.1:2375. Is the docker daemon running?

DOCKER_HOST は、docker context use で選んだコンテキストより優先されます。docker context ls を実行すると、警告で分かります。

$ DOCKER_HOST=tcp://127.0.0.1:2375 docker context ls
...
Warning: DOCKER_HOST environment variable overrides the active context. To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable.

使っていないツール(以前に入れた Colima や Docker Desktop など)のコンテキストが選ばれたままのときも、つながりません。

$ docker --context colima ps
failed to connect to the docker API at unix:///home/dev/.colima/default/docker.sock; check if the path is correct and if the daemon is running: dial unix /home/dev/.colima/default/docker.sock: connect: no such file or directory
確認・直し方 コマンド
DOCKER_HOST が設定されているか echo $DOCKER_HOST(Windows は echo %DOCKER_HOST%)
DOCKER_HOST を外す unset DOCKER_HOST。.bashrc・.zshrc に書かれていれば消す
使うコンテキストを選ぶ docker context use default(Docker Desktop の Mac は desktop-linux が多い)
環境変数 DOCKER_CONTEXT 設定されていれば、これもコンテキストより優先される

Mac で Docker Desktop と Colima を入れ替えた後や、両方入れているときに起きやすい原因です。

確認の手順(チェックリスト)

順番 確認すること コマンド
1 エラー文の at の後ろ(接続先) ―
2 今のコンテキストと DOCKER_HOST docker context ls、echo $DOCKER_HOST
3 デーモンが動いているか sudo systemctl status docker、Docker Desktop のアイコン
4 ソケットのファイルと権限 ls -la /var/run/docker.sock
5 自分が docker グループに入っているか id -nG
6 sudo docker ps なら動くか 動くなら権限(例2)、動かないならデーモン(例1)

よくある質問

Q. sudo docker ps なら動くのに、docker ps だと動きません。 A. デーモンは動いていて、権限が無い状態です(例2)。docker グループに追加して、ログインし直します。

Q. docker グループに追加したのに、まだ permission denied になります。 A. グループの追加は、ログインし直すまで今のターミナルに反映されません。id -nG に docker が出ているかを確認します。VS Code のリモート接続などは、接続し直す必要があります。

Q. PCを再起動するたびにエラーになります。 A. デーモンの自動起動が設定されていません。Linux は sudo systemctl enable docker.service containerd.service、WSL2 は systemd を有効にします。Docker Desktop は、ログイン時に起動する設定にします。

Q. GitHub Actions や CI の中でこのエラーになります。 A. CI のジョブがコンテナの中で動いていて、その中に Docker デーモンが無いことが多い原因です。CI のサービスごとに、Docker を使える実行環境(ランナー)やオプションが用意されているので、そちらを使います。

まとめ

  • docker コマンドがデーモンにつながらないエラー。エラー文の at の後ろが接続先
  • no such file or directory・Is the docker daemon running? はデーモンが止まっている。systemctl start docker、Docker Desktop を起動
  • permission denied は docker グループに入っていない。usermod -aG docker $USER の後、ログインし直す
  • DOCKER_HOST はコンテキストより優先。docker context ls の警告で分かる
  • Docker 29 では、ソケットが無いと failed to connect to the docker API と表示される。これもデーモンが止まっているサイン

参考・出典

確認日はいずれも 2026年10月10日です。

  • Docker Docs「Linux post-installation steps for Docker Engine」:https://docs.docker.com/engine/install/linux-postinstall/
  • Docker Docs「Docker contexts」:https://docs.docker.com/engine/manage-resources/contexts/
  • Microsoft Learn「Use systemd to manage Linux services with WSL」:https://learn.microsoft.com/en-us/windows/wsl/systemd

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「Cannot connect to the Docker daemonの原因と直し方」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?