web-dev-qa-db-ja.com

docker.sockの許可が拒否されました

次のような単純なdockerコマンドを実行しようとすると:

$ docker ps -a

エラーメッセージが表示されます。

許可が拒否されました... /var/run/docker.sock:connect:permission denied

権限を確認するとき

$ ls -al /var/run/

次の行が表示されます。

srw-rw---- root docker docker.sock

そこで、多くのフォーラムからのアドバイスに従い、ローカルユーザーをdockerグループに追加します。

$ Sudo usermod -aG docker $USER

しかし、それは役に立ちません。まったく同じエラーメッセージが表示されます。どうすれば修正できますか?

36
Jacobian

シェルが初めての場合は、次のコマンドを使用します。

$ Sudo usermod -aG docker $USER

$USERをシェルで定義する必要があります。これは多くの場合デフォルトで存在しますが、一部のシェルではログインIDに値を設定する必要がある場合があります。


ユーザーのグループを変更しても、ユーザーが開いている既存のログイン、ターミナル、シェルは変更されません。再度ログインを実行しないようにするには、次を実行するだけです:

$ newgrp docker

現在のシェルでそのグループにアクセスします。


これを実行すると、ユーザーは事実上サーバー上でルートアクセス権を持つようになるため、無制限のSudoアクセスで信頼されているユーザーに対してのみこれを行います。

82
BMitch
  1. $ USER変数が設定されていることを確認してください

$ echo $ USER

$ Sudo usermod -aG docker $ USER

  1. ログアウト
  2. ログインしたら、Dockerサービスを再起動します

$ sudo systemctl restart docker

$ docker ps

8
1nternetz

理由:エラーメッセージは、現在のユーザーがdockerエンジンにアクセスできないことを意味します。ユーザーには、UNIXソケットにアクセスしてエンジンと通信するための十分な権限がないためです。

クイックフィックス:

  1. Sudoを使用してrootとしてコマンドを実行します。

    つまり、sudo docker ps

  2. 現在のユーザーの/var/run/docker.sockの権限を変更します。

    すなわち-Sudo chmod 777 /var/run/docker.sock

永続的な解決策:

現在のユーザーをdockerグループに追加します。これは次のように入力することで実現できます

Sudo usermod -a -G docker $ USER


注:変更を有効にするには、ログアウトしてから再度ログインする必要があります。

4
Nitish

コメントで前述したように、変更は再ログインするまで適用されません。 SSHを実行して新しいターミナルを開くと、新しいターミナルで機能します。

ただし、GUIを使用して新しいターミナルを開いたため、変更は適用されませんでした。それがエラーが消えなかった理由です

それで、以下のコマンドはその仕事をしました、ただの再ログインは見逃されました

Sudo usermod -aG docker $USER
3
Tarun Lalwani

私のユーザーはADユーザーであるため、/ etc/groupファイルを手動で編集してADユーザーをローカルグループに追加する必要があります。残念ながら、adduserコマンドはnsswitchに対応していないようで、グループに誰かを追加するときにローカルに定義されていないユーザーを認識しません。

次に、/ etc/groupを再起動または更新します。これで、Sudoなしでdockerを使用できます。

よろしく。

0
GSAN