LinuxにDocker Engineをインストールした際、一般ユーザーではdockerコマンドがエラーになる
公式の手順どおり、LinuxにDocker Engineをインストールしましたが、docker.sock
へのアクセス権がなく、docker
コマンドを実行する際に
エラーになってしまったため、その解決方法を記載しておきます。
はじめに
Linux(CentOS Stream 9)にDocker Engineをインストールする手順については、
公式の以下のサイトを参考にしました。
https://docs.docker.com/engine/install/centos/
以前のバージョンをアンインストール
$ sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
リポジトリを追加
$ sudo dnf -y install dnf-plugins-core
$ sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Docker Engineをインストール
$ sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
GPGキーは、フィンガープリントが 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
と一致することを確認し、受け入れます。
Docker Engineを起動
$ sudo systemctl enable --now docker
発生したエラーの内容
$ docker --version
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/containers/json": dial unix /var/run/docker.sock: connect: permission denied
解決策1(一時的)
解決策として、以下のコマンドも紹介されていましたが、
こちらは一時的な効果しかなく、再起動後には毎回実行する必要があります。
$ sudo chmod 666 /var/run/docker.sock
解決策2(恒久的)
恒久的な解決策としては、一般ユーザーをdockerグループに追加します。
一般ユーザーでdockerコマンドを実行できるようにする
公式サイトにも、以下にて紹介されておりました。
https://docs.docker.com/engine/install/linux-postinstall/
dockerグループを作成
$ sudo groupadd docker
一般ユーザーをdockerグループに追加
dockerコマンドを実行したい一般ユーザーが、現在ログイン中のユーザーと異なる場合は、$USER
のところをユーザー名に変更ください。
$ sudo usermod -aG docker $USER
上記設定を反映する
設定を反映するには、以下のコマンドを実行するか、ユーザーのログアウト/ログイン、または再起動が必要なようです。
$ newgrp docker
以上で、一般ユーザーでもdockerコマンドが実行できるようになります。