できない.dev

Docker で「permission denied while trying to connect to the Docker daemon socket」が実行できない

docker コマンドを sudo なしで実行したとき、ユーザーが docker グループに属していないとソケットにアクセスできず起きる。
グループに追加すれば解決する。

公開: 更新:

実行例あり(2026-09-09 に実環境で検証)

要約

このエラーは、Docker デーモンの Unix ソケット /var/run/docker.sock に、実行ユーザーがアクセスする権限を持っていないときに出る。
Linux ではユーザーを docker グループに追加してログインし直せば、sudo なしで実行できる。
急ぐなら sudo を付ける。

実行例

ソケットの権限を見ると所有者とグループがどちらも root で、その両方に当てはまらないユーザーで docker ps を打つと API に接続する手前で弾かれる。
同じユーザーにソケットのグループを持たせて実行し直すと、今度はデーモンのバージョンが返ってくる。

$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock docker:cli ls -l /var/run/docker.sock
srw-rw----    1 root     root             0 Sep  9 00:28 /var/run/docker.sock
$ docker run --rm -u 1000:1000 -v /var/run/docker.sock:/var/run/docker.sock docker:cli docker ps
permission denied while trying to connect to the docker API at unix:///var/run/docker.sock
終了コード: 1
$ docker run --rm -u 1000:1000 --group-add 0 -v /var/run/docker.sock:/var/run/docker.sock docker:cli docker version --format '{{.Server.Version}}'
29.1.3
終了コード: 0(デーモンのバージョンが返れば接続成功)

— 2026-09-09 時点の出力

検証環境

検証日
実行環境
local host (Windows 11 Home, Docker 29.1.3)
バージョン
  • Node.js 22.14.0
  • npm 10.9.2
  • Git 2.48.1.windows.1
  • Docker 29.1.3

この記事の「実行例」は、上記の環境で実際にコマンドを実行して得られた出力をそのまま掲載しています。 再現手順はリポジトリの検証スクリプトとして管理し、定期的に再実行して出力を更新しています。

よくある原因

  1. docker グループ未所属: ソケットは root と docker グループに 660 権限で属する。
    どちらでもないユーザーは接続できない。
  2. グループ変更が未反映: usermod でグループに入れても、既存のログインセッションには反映されない。
  3. 導入直後: パッケージで入れた直後は、自分のユーザーがまだ docker グループに入っていないことが多い。

解決策

1. docker グループに追加する

sudo groupadd docker          # 無ければ作成
sudo usermod -aG docker $USER

2. グループ変更を反映する

一度ログアウト・ログインするか、同じシェルで即時に反映したいときは次を実行する。

newgrp docker
docker run hello-world

3. 暫定対応

権限を変えられない環境では sudo を付けて実行する。

sudo docker ps

手順の詳細と、docker グループが root 相当の権限を与える点への注意は公式の Linux ポストインストール手順(新しいタブで開く)に記載されている。

この記事は役立ちましたか?