
wslにインストールしたdockerの権限エラーの解決方法
はじめに
もともと使用していたDocker Desktopの利用をやめて、直接WSL2にインストールしたDockerをインストールをしました。
実行すると権限エラーが発生したので、解決方法と原因について調べました。
エラーメッセージ
docker: Dockerデーモンソケットunix:///var/run/docker.sockへの接続中に権限が拒否されました。
$ docker run hello-world
docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
解決方法
1. ユーザーをdockerグループに追加
/var/run/docker.sockがdockerグループに所属しているので、ユーザーを追加します。
$ sudo usermod -aG docker $USER
2. docker.sockの権限を変更
ユーザーも実行できるように、ファイルに読み書きの権限を追加します。
$ sudo chmod o+rw /var/run/docker.sock
# もしくは
$ sudo chmod 666 /var/run/docker.sock
3. 管理者権限でコマンドを実行
権限の設定を変更せず、毎度管理者権限でコマンドを実行します。
$ sudo docker run hello-world
原因
ログイン中のユーザーにDockerのソケットへのアクセス権限がないためエラーが発生しています。
公式ドキュメントにも以下のように説明されています。
デフォルトでは
rootユーザーがUnixソケットを所有しており、ほかのユーザーはsudoを使用してのみアクセスできます。
sudoをつけずに使用したい場合は、dockerグループにユーザーを追加してください。Post-installation steps | Docker Docs
docs.docker.com
$ ls -la /var/run/docker.sock
srw-rw---- 1 root docker 0 Oct 19 20:05 /var/run/docker.sock