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 を付ける。
よくある原因
- docker グループ未所属: ソケットは root と
dockerグループに 660 権限で属する。
どちらでもないユーザーは接続できない。 - グループ変更が未反映:
usermodでグループに入れても、既存のログインセッションには反映されない。 - 導入直後: パッケージで入れた直後は、自分のユーザーがまだ
dockerグループに入っていないことが多い。
解決策
1. docker グループに追加する
sudo groupadd docker # 無ければ作成
sudo usermod -aG docker $USER2. グループ変更を反映する
一度ログアウト・ログインするか、同じシェルで即時に反映したいときは次を実行する。
newgrp docker
docker run hello-world3. 暫定対応
権限を変えられない環境では sudo を付けて実行する。
sudo docker ps手順の詳細と、docker グループが root 相当の権限を与える点への注意は公式の Linux ポストインストール手順(新しいタブで開く)に記載されている。