dockerコマンドでPermission deniedが出た

  • Docker
  • Linux

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

何が起きたか

docker ps とか docker run を叩くと以下のエラーが出た。

Got permission denied while trying to connect to the Docker daemon socket

Dockerデーモンは /var/run/docker.sock というUnixソケット経由で操作されていて、このソケットは基本的に root とdockerグループにしか触れない。sudoなしで実行している一般ユーザーだと弾かれる。

対応

docker グループに自分を追加する。

sudo gpasswd -a $(whoami) docker

usermod -aG docker $(whoami) でも同じことができる。ただし usermod は -a(append)を付け忘れると既存の所属グループが上書きされるので注意。gpasswd -a の方が事故りにくい。

反映されない場合

コマンドを打っただけだとログインし直すまで反映されない。今のシェルにすぐ効かせたいなら以下のどちらか。

  • ログアウト→再ログイン
  • newgrp docker(サブシェルとして反映)

groups コマンドで docker が出てこない間はまだ反映されていない。

気をつけること

docker グループに入れる = 実質rootを渡すのとほぼ同じ。Dockerデーモン自体がroot権限で動いているので、コンテナ経由でホストのファイルシステムにroot権限でアクセスすることができてしまう。sudoの許可を絞るのとは意味が違うので、この点は把握した上でグループに追加した方がいい。