- Docker
Cannot connect to the Docker daemonの原因と直し方
「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期連続の黒字決算。