ソフトウェアストアを通じて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エンジンにアクセスできないことを示しています。これは、エンジンと通信するためにUNIXソケットにアクセスする権限がないためです。
Sudo
コマンドを使用して、毎回管理者特権でコマンドを実行します。
現在のユーザーをdocker
グループに追加します。これは次のように入力することで実現できます
Sudo usermod -a -G docker $USER
グループメンバーシップを有効にするには、ログアウトしてから再度ログインする必要があります。
ソース: techoverflow.net
これは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グループに属していると思います。これを確認するには、以下のコマンドを発行します。
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
Sudo setfacl -m user:your_user_name:rw /var/run/docker.sock
再起動を必要とせず、より安全です
ユーザーをDockerグループに追加する必要があります( 公式ドキュメントを参照 )。
コマンドの前にSudo
を追加するか、次のコマンドを使用してdocker
グループにユーザーを追加できます。
Sudo usermod -aG docker <USER>
ログアウトしてから再度ログインし、グループメンバーシップが再評価されるようにします。