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


33

ソフトウェアストアから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から実行できるようにしたい人のために、質問を公開しておきます。


Docker公式リポジトリからdockerをインストールしました。ユーザーをdockerグループに追加したとき、Dockerは既に実行されていましたが、id -nGdockerを表示せず、どのdockerコマンドでも許可拒否エラーが発生しました。Dockerシステムプロセスが実行され続けるため、ログアウトとログインは機能しませんでした。システムの再起動またはdockerの再起動は、ユーザーをdockerグループの一部として表示し、dockerコマンドの実行を許可しました。注:0担当者、コメントを追加できません。
サントシュパテル

回答:


33

これは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スナップGitHubから


私はそのページを見ていなかったので、リンクをありがとう。そうは言っても、私はUbuntu Coreを使用していないので、addgroup指示に従う必要がありますが、それは他の答えのように、私がしたことについてだと思います。残念ながら、現在動作しているシステムには触れないことを望んでいますが、他の誰かがこれを試して、うまく動作するようになった場合、それを聞きたいです。
ビンセント

2
Dockerスナップを無効化/有効化すると、私にとってはうまくいきました。ありがとう
マニッシュクマール

1
これはUbuntu(デスクトップ)19.04にも適用されます。
ニックブリーン

31

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

一時的な解決策

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

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

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

sudo usermod -a -G docker $USER

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

ソース:techoverflow.net


1
あなたのGoogle-fuは私のものよりも優れているようです。残念ながら、これは機能しません。まず第一に、dockerグループは存在しませんでした。その後、最初にsudo addgroup dockerコマンドを実行してからコマンドを再実行し、ログアウトして再度ログインしました。残念ながら、質問に示されたエラー
ビンセント

2
@Vincentは、グループの変更がすぐに行われないことを忘れていませんでしたか?試すnewgrp dockerか、ログアウトしてからログインします
。– ADDB

いや、申し訳ありませんが、ことを言及するのを忘れてしまった-あなたは答えながら:)実行私は私のコメントを更新groups vincentできます:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
ヴィンセント

参照用に@Vincentを使用すると、Dockerデーモンが起動しますよね?これを試すsudo /etc/init.d/docker statussudo service docker statusテストしてください。
ADDB

うーん、私はそれらがスナップであるために働くとは思わない:paste.ubuntu.com/25219172 それは言った、ps cax | grep dockerd与える31034 ? Ssl 0:05 dockerd
ビンセント

6

ユーザー名は既に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


これだけがubuntu 18.04で機能します。Uddhav Gautam
Sabbir

3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

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


1

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

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

sudo usermod -aG docker <USER>

ログアウトしてからログインし直して、グループメンバーシップを再評価してください。


そのリンクのコンテンツは消えてしまう可能性があるため、関連する詳細をここに追加してください。
チャイT.レックス

必要はありません。他の回答では、ユーザーをグループに追加することについて既に言及しました-それは役に立ちませんでした。(また、それがスナップインストールには役立つが、通常のインストールには役に立たない理由もありません。)
ビンセント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.