web-dev-qa-db-ja.com

スナップとしてインストールした後にDockerを実行すると、許可が拒否されました

ソフトウェアストアを通じてDockerをインストールしましたが、これはSnapパッケージであることを示しています。私はこれで問題ありませんが、残念ながら、私が試したすべてのDockerコマンドは機能しません。

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

これを修正する方法はありますか?

編集:今のところ、これを回避するには Docker自身のリポジトリ からDockerをインストールします。将来的にも質問。ただし、Snapから実行できるようにしたい人のために、質問を公開しておきます。

32
Vincent

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

一時的な解決策

Sudoコマンドを使用して、毎回管理者特権でコマンドを実行します。

永続的な(推奨される)ソリューション

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

Sudo usermod -a -G docker $USER

グループメンバーシップを有効にするには、ログアウトしてから再度ログインする必要があります。

ソース: techoverflow.net

31
ADDB

これはGitHubページからのもので、次の正確な手順を試しましたか?

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ Sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ Sudo addgroup --system docker
$ Sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ Sudo snap disable docker
$ Sudo snap enable docker

Docker snap github から

30
Mike Coleman

あなたのユーザー名は既に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デーモンスレッドによって継続的にリッスンされます。これにより、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

6
Uddhav Gautam
Sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

再起動を必要とせず、より安全です

3
Nahshon paz

ユーザーをDockerグループに追加する必要があります( 公式ドキュメントを参照 )。

コマンドの前にSudoを追加するか、次のコマンドを使用してdockerグループにユーザーを追加できます。

Sudo usermod -aG docker <USER>

ログアウトしてから再度ログインし、グループメンバーシップが再評価されるようにします。

1