UbuntuのDockerの許可問題をどのように解決しますか?


35

ここで説明したように、Dockerをインストールしました。私が使用してUbuntuのトラスティ14.04(LTS)(64ビット)。インストール中のすべてが順調でした。また、コマンド$ sudo docker run -i -t ubuntu /bin/bashは正常に完了します(開いたコンソールで「exit」と入力した後。しかし、何か他のことをしようとすると、「permission denied」と表示されます。例:

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

Reuslts in Post http:///var/run/docker.sock/v1.12/containers/create: dial unix /var/run/docker.sock: permission denied

` docker info`

Reuslts in Get http:///var/run/docker.sock/v1.12/info: dial unix /var/run/docker.sock: permission denied

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

回答:


50

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

14
これを有効にするには、再起動する必要がありました。
廃止

8
再起動する必要はなく、ログアウトしてログインするだけです。
アジェイゴータム

2
ログアウトしてexec $SHELLいない場合でも、ログアウトしました。どのメカニズムでログアウトすることで問題が解決したかを知りたいです。これは窓ではありません!
ダース・エグレギアス

1
Fedoraでは、まず編集/etc/selinux/configしてputしSELINUX=disabled、次にLinuxを再起動する必要があります
Junior M

1
素晴らしい説明!あなたは最高です!:)
フランシス・ロドリゲス

5

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

setenforce 0

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


4

selinuxが原因で同じ問題が発生しました。selinuxが原因であるかどうかを確認するには、次の手順を実行します。

  1. selinuxの無効化: setenforce 0
  2. 再試行中

selinuxを無効にすることで問題が解決した場合、それを無効のままにする理由にはなりません。

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

3

ユーザー名は既にdockerグループに属していると思われます。これを確認するには、以下のコマンドを発行します。

id -nG

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

sudo groupadd docker
sudo usermod -aG docker $USER

コマンドを実行すると、sudo systemctl start dockerドッカープロセスが作成されます。そのdockerプロセスにはdockerdデーモンスレッドが含まれています。このコマンドは、デフォルトのdocker.sockUnixソケットも作成します。docker.sockソケットを連続で聴いているdockerdデーモンスレッド。これにより、docker.pidプロセスでカーネルレベルのIPCを実行できます。このdockerソケットを使用できるようにするには、プロセスレベル(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


1

現在のバージョン我々はグループを追加する必要はありません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),...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.