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
どうすればこれを解決できますか?
Dockerをroot以外のユーザーとして実行したい場合は、dockerグループに追加する必要があります。
港湾労働者グループを作成します。
$ Sudo groupadd docker
ユーザーをdockerグループに追加します。
$ Sudo usermod -aG docker $USER
ログアウトして再度ログインして実行してください。
$ docker run hello-world
Dockerの公式ドキュメントから引用しました: https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user
アップグレード後、許可が拒否されました。 '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)
$ Sudo groupadd docker
$ Sudo usermod -aG docker $USER
3. dockerグループへの切り替えセッション
$newgrp - docker
$docker run hello-world
docker
グループに追加しますSudo usermod -aG docker $USER
/var/run/docker.sock
に接続できるようにdocker socketの権限を変更しますSudo chmod 666 /var/run/docker.sock
コマンドでこのエラーを解決します:
$ Sudo chmod 666 /var/run/docker.sock
このコマンドを使う
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
この問題を解決するために、私は自分の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/
どうもありがとう!