web-dev-qa-db-ja.com

どうやってUbuntuのdockerの権限の問題を解決しますか?

こちら のようにdockerをインストールしました 。私は Ubuntu Trusty 14.04(LTS)(64-bit) を使います。インストール中のすべてが順調でした。また、コマンド$ Sudo docker run -i -t ubuntu /bin/bashは(開いたコンソールで「exit」と入力した後で)正常に完了しました。しかし、他のことをしようとすると、「権限が拒否されました」と表示されます。

`$ Sudo docker run -d -P training/webapp python app.py`

Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission deniedでの再利用

` docker info`

Get http:///var/run/docker.sock/v1.12/info: dial unix /var/run/docker.sock: permission deniedでの再利用

これを解決するには?私はその問題についてグーグルしましたが、私の場合の解決策を見つけることができません。

33
Cherry

Dockerグループが存在しない場合は追加します。

$ Sudo groupadd docker

接続ユーザー${USER}をdockerグループに追加します。好みのユーザーに合わせてユーザー名を変更してください。

$ Sudo gpasswd -a ${USER} docker

Dockerデーモンを再起動します。

$ Sudo service docker restart # Or docker.io for older versions
# 18.04+ with snap:
$ Sudo systemctl restart snap.docker.dockerd

ログアウトしてから再度ログインして、グループの権限を更新してください。それを避けるために、次のようにサブシェルに切り替えることができます。あるいは、この質問に 記載されている他のトリックを使う

su - $USER
48
pyprism

CentOSまたはRedHatを実行している場合は、最初にSELinuxを無効にする必要があります。

setenforce 0

その後SELinuxを再度有効にするかsetenforce 1を実行するために起動します。

4
joelschmid

私は、selinuxのせいで同じ問題を抱えていました。 selinuxが原因であるかどうかを確認できます。

  1. Selinuxを無効にする:setenforce 0
  2. 再試行

Selinuxを無効にしても問題が解決しない場合は、無効にしておく必要はありません。

  1. Selinuxを有効にします。setenforce 1
  2. Selinux設定でソケット接続を許可します。setsebool docker_connect_any true
  3. --priviledgedオプションを付けてDockerコンテナーを実行する
4
Paul Podgorsek

あなたのユーザ名はすでにdockerグループに入っていると思います。これをチェックするには、下記のコマンドを発行してください。

id -nG

そうでない場合は、下記のコマンドでユーザーをdockerグループに追加する必要があります。

Sudo groupadd docker
Sudo usermod -aG docker $USER

コマンドSudo systemctl start dockerを実行すると、dockerプロセスが作成されます。そのdockerプロセスにはdockerdデーモンスレッドが含まれています。このコマンドは、デフォルトのdocker.sock Unixソケットも作成します。 docker.sockソケットは、dockerdデーモンスレッドによって継続的に待機されています。これにより、カーネルレベルのIPCをdocker.pidプロセスで実行できます。このdocker socketを使用するには、プロセスレベル(docker.pid)とファイルレベル(docker.sock)から適切な許可を得る必要があります。したがって、2つのコマンドの下で実行すると問題は解決します。 Sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission Sudo chmod a+rwx /var/run/docker.pid

3
Uddhav Gautam

現在のバージョン までには、グループdockerを追加する必要はありません。
インストールによって自動的に存在します。次のコマンドで確認できます。

$ Sudo groupadd docker
groupadd: group 'docker' already exists

そのため、Dockerを非rootユーザーとして管理するには、ユーザーをdockerに追加するだけですその後、グループからログアウトして再度ログインし、グループのメンバーシップが再評価されるようにします。

$ Sudo usermod -aG docker $USER
$ logout

ログイン時に確認するには

$ docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

新しいプライマリグループとしてGROUP:dockerを使うことを強制することさえできます。

$ Sudo chown "$USER":"docker" /home/"$USER"/.docker -R
$ Sudo chmod g+rwx "$HOME/.docker" -R
$ Sudo usermod -g docker ${USER}
$ logout

ログイン時に確認するには

$ id
uid=1001(<user_name>) gid=999(docker) groups=999(docker),...
0
Chetabahana