web-dev-qa-db-ja.com

Dockerを修正する方法:許可を拒否された問題を得ました

Ubuntu OSがインストールされているマシンにDockerをインストールしました。 dockerをインストールした後、実行したとき

Sudo docker run hello-world

すべて問題ありませんが、コマンドを短くするためにSudoという単語を隠したいです。

Word Sudoなしでコマンドを書くと

docker run hello-world

次のように表示されます。

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.See 'docker run --help'.

私が作ろうとしても同じことが起こりました

docker-compose up

どうすればこれを解決できますか?

84
Carlos Andres

Dockerをroot以外のユーザーとして実行したい場合は、dockerグループに追加する必要があります。

  1. 港湾労働者グループを作成します。

    $ Sudo groupadd docker
    
  2. ユーザーをdockerグループに追加します。

    $ Sudo usermod -aG docker $USER
    
  3. ログアウトして再度ログインして実行してください。

    $ docker run hello-world
    

Dockerの公式ドキュメントから引用しました: https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user

97
mkb

アップグレード後、許可が拒否されました。 'mkb' post install steps のステップを行っても、私のユーザーはすでに 'docker'グループに属しているので何も変更しません。私は再試行しますが、成功せずに2回試行します。

検索時間後に、この次の解決策が最終的にうまくいきました:

Sudo chmod 666 /var/run/docker.sock

解決策は Olshansk から来ました。

アップグレードが 'docker'グループに対する十分な許可なしにソケットを再作成したように見えます。

問題: このハードchmodセキュリティホールを開き、再起動するたびにこのエラーが繰り返し発生するため、毎回上記のコマンドを再実行する必要があります。私は一回限り解決策が欲しいのです。そのためには2つの問題があります。

1)SystemDの問題:ソケットは所有者 'root'とグループ 'root'でのみ作成されます。このコマンドでこの最初の問題を確認できます。

ls -l /lib/systemd/system/docker.socket

これがすべてうまくいけば、 'root/root'ではなく 'root/docker'が表示されるはずです。

2)グラフィカルログイン_の問題:https://superuser.com/questions/1348196/why-my-linux-account-only-belongs-to-one-group これをチェックできますこのコマンドの2番目の問題:

groups

すべて正しければ、リストにdockerグループが表示されます。そうでない場合は、コマンドを試してください

Sudo su $USER  -c groups

dockerグループが表示されたら、それはバグが原因です。

解決策: グラフィカルログインのための回避策を手に入れることに成功したら、これは仕事をするべきです:

Sudo chgrp docker /lib/systemd/system/docker.socket
Sudo chmod g+w /lib/systemd/system/docker.socket

しかし、このバグに対処できない場合は、それほど悪くない解決策が考えられます。

Sudo chgrp $USER /lib/systemd/system/docker.socket
Sudo chmod g+w /lib/systemd/system/docker.socket

これは、あなたがグラフィカルな環境にあり、おそらくあなたのコンピュータの唯一のユーザだからです。どちらの場合も再起動が必要です(またはSudo chmod 666 /var/run/docker.sock

123
Galigator
  1. dockerグループを追加
$ Sudo groupadd docker
  1. 現在のユーザーをdockerグループに追加します
$ Sudo usermod -aG docker $USER

3. dockerグループへの切り替えセッション

$newgrp - docker
  1. 走る
$docker run hello-world
7
wei.liang
  1. 現在のユーザーをdockerグループに追加します
Sudo usermod -aG docker $USER
  1. Dockerデーモンの/var/run/docker.sockに接続できるようにdocker socketの権限を変更します
Sudo chmod 666 /var/run/docker.sock
7
aabdulwahed

コマンドでこのエラーを解決します:

$ Sudo chmod 666 /var/run/docker.sock
5
kumar

このコマンドを使う

Sudo usermod -aG docker $USER

それから私のために働いたあなたのコンピュータを再起動してください。

lightdmとkwalletには、ログイン時に補助グループを通過しないように見えるバグが同梱されています。これを解決するために、私はSudo usermod -aG docker $USERのほかに、コメントアウトする必要がありました

auth optional pam_kwallet.so
auth optional pam_kwallet5.so

#auth optional pam_kwallet.so
#auth optional pam_kwallet5.so

docker-groupを実際に有効にするには、/etc/pam.d/lightdm を再起動する前に を指定します。

バグ: https://bugs.launchpad.net/lightdm/+bug/1781418 そしてここ: https://bugzilla.redhat.com/show_bug.cgi?id=1581495

1
Herbert

この問題を解決するために、私は自分のdockerとdocker-composeがどこにインストールされているかを調べました。私の場合、docker/usr/bin/dockerにインストールされ、docker-compose/usr/local/bin/docker-composeパスにインストールされました。それから私はこれを私の端末に書きます:

Dockerに:

Sudo chmod +x /usr/bin/docker

docker-composeに:

Sudo chmod +x /usr/local/bin/docker-compose

今、私は自分のコマンドドッカーにWord Sudoを書く必要はありません。

/ ****************************************************** ********************** /

エラー:

この問題の最良の解決策は@ mkasbergによってコメントされました。私はコメントを引用します:

That might work, you might run into issues down the road. Also, it's a security vulnerability. You'd be better off just adding yourself to the docker group, as the docs say. Sudo groupadd docker, Sudo usermod -aG docker $USER.Docs:https://docs.docker.com/install/linux/linux-postinstall/

どうもありがとう!

0
Carlos Andres