web-dev-qa-db-ja.com

sudoなしでdockerを使用することは可能ですか?

dockerに関するこの質問 の回答によると、非rootとして実行するのは、非rootユーザー名をdockerグループに追加し、ログアウトして再度ログインするのと同じくらい簡単です。 。そして、確かに、私がそれをSudoとして使用した場合、hello-worldうまくいった画像。しかし、whalefortuneと呼ばれる別のテストイメージの場合、access deniedエラー-以下を参照してください。

Root以外でdockerを実行することは一般的に不可能ですか?私はUbuntu 19.04を使用していますが、これは例よりも新しいバージョンであり、Dockerを非ルートとして実行している可能性のあるセキュリティ侵害についての言及がありました。

私のアイデアは、nvidia-dockerを通常のユーザーとして実行することでしたが、それは可能ですか?

$ Sudo docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest:   sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (AMD64)
  3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

$ docker run --rm dbkdoc/whalefortune
docker: Got permission denied while trying to connect to the 
Docker daemon socket at unix:///var/run/docker.sock: 
Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: 
dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
4
alle_meije

Dockerコマンドの前にSudoを付けたくない場合は、dockerと呼ばれるUnixグループを作成し、そこにユーザーを追加します。 Dockerデーモンが起動すると、dockerグループのメンバーがアクセスできるUnixソケットが作成されます。

警告:

Dockerグループは、rootユーザーと同等の特権を付与します。これがシステムのセキュリティに与える影響の詳細については、「 Docker Daemon Attack Surface 」を参照してください。


それでもSudoなしでdockerを実行したい場合:

  • Dockerグループが存在しない場合は追加します。

    Sudo groupadd docker
    
  • 接続しているユーザー「$ USER」をdockerグループに追加します。現在のユーザーを使用したくない場合は、ユーザー名を希望のユーザーと一致するように変更します。

    Sudo usermod -aG docker $USER
    
  • newgrp dockerまたはログアウト/ログインしてグループへの変更をアクティブ化します(仮想マシンでテストする場合、変更を有効にするために仮想マシンを再起動する必要がある場合があります)。

  • 使用できます

    docker run hello-world
    

    sudoなしでdockerを実行できるかどうかを確認します。

PS:
ユーザーをSudoグループに追加する前にdockerを使用してDocker CLIコマンドを最初に実行した場合、次のエラーが表示され、~/.docker/ディレクトリは、Sudoコマンドが原因で不正な権限で作成されました。

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

この問題を解決するには、~/.docker/ディレクトリ(自動的に再作成されますが、カスタム設定はすべて失われます)、または次のコマンドを使用してその所有権と権限を変更します。

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

ソース:Dockerドキュメント

4
singrium