できない.dev

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

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

公開:

要約

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

よくある原因

  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 ポストインストール手順(新しいタブで開く)に記載されている。

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