GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Linuxでroot以外のユーザーとしてDockerを実行する方法

UbuntuへのDockerのインストール とても簡単です!初心者でも、誰でも15分以内にインストールできます。 Dockerをインストールした後、通常のユーザーとしてほとんどのDocker操作を実行できないことに気付きました。 Dockerを「root」ユーザーとして実行するか、「sudo」権限で毎回実行する必要がありました。 root以外のユーザーとして、またはsudo権限なしでDockerを実行しようとすると、次のエラーが発生します。

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.40/version: dial unix /var/run/docker.sock: connect: permission denied

たとえば、次のコマンドを使用して、通常のユーザーとしてDockerのバージョンを確認したいと思います。

$ docker version

そして、次のエラーメッセージが表示されます:

Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b7f0
Built: Wed Mar 11 01:25:46 2020
OS/Arch: linux/amd64
Experimental: false
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.40/version: dial unix /var/run/docker.sock: connect: permission denied

しかし、sudo権限で同じコマンドを実行すると;

$ sudo docker version

以下の出力に示すように、現在インストールされているDockerバージョンの詳細全体が表示されます。

Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b7f0
 Built:             Wed Mar 11 01:25:46 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b7f0
  Built:            Wed Mar 11 01:24:19 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

Dockerのドキュメントページを検索したところ、DockerデーモンがデフォルトでTCPポートではなくUnixソケットにバインドされていることに気付きました。そのUnixソケットはルートによって所有されているので ユーザーの場合、Dockerデーモンはrootユーザーとしてのみ実行されます。したがって、通常のユーザーはほとんどのDockerコマンドを実行できません。

Linuxでroot以外のユーザーとしてDockerを実行する場合は、次の手順を実行する必要があります。私はこれをUbuntu18.04サーバーでテストしましたが、問題なく動作しました。他のLinuxディストリビューションでも機能するはずです。

Linuxでroot以外のユーザーとしてDockerを実行する

Docker権限拒否エラーを修正し、Dockerをroot以外のユーザーとして使用するには、 "docker"というグループを作成します。 次のコマンドを使用します:

$ sudo groupadd docker

次に、ユーザーを dockerに追加します グループ:

$ sudo usermod -aG docker $USER

ユーザーをDockerグループに追加したら、ログアウトしてから再度ログインして、変更を有効にします。

または、次のコマンドを実行して、変更をグループに適用します。

$ newgrp docker

今後、通常の(root以外の)ユーザーはsudo権限なしでDockerを使用できるようになります。

通常のユーザーとして次のコマンドを実行します。

$ docker version
$ docker run hello-world

出力例:

見る?これで、sudo権限なしで両方のDockerコマンドを実行できます。

念のため、ユーザーをDockerグループに追加する前に、「sudo」権限でいくつかのDockerコマンドを実行した場合は、次のようなエラーが表示される可能性があります。

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

上記のエラーメッセージは、〜/ .docker /を示しています 'sudo'コマンドが原因で、ディレクトリが誤った権限で作成されました。この問題を修正するには、次のコマンドを使用してこのディレクトリの所有権と権限を変更します。

$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R

これを有効にするには、ログアウトしてから再度ログインします。

それでも問題が解決しない場合は、〜/ .docker /を削除する必要があります。 ディレクトリ。自動的に再作成されますが、カスタム設定がある場合はすべて失われます。

これがお役に立てば幸いです。


Docker
  1. Redhatのバージョンを確認する方法

  2. Dockerコンテナ内でプログラムを実行する方法は?

  3. 実行中のDockerコンテナでコマンドを実行する方法

  1. CentOS/RHEL 7 で root 以外のユーザーとして rsyslog を実行する方法

  2. Linux で UID 0 の非ルート ユーザーを削除する方法

  3. ユーザーを Docker コンテナに追加するにはどうすればよいですか?

  1. DockerコンテナでMySQLを実行する方法

  2. root 以外のユーザーとして Docker を実行する

  3. Android - Linux を使用して Samsung S6 をルート化する方法は?