良いニュース:新しいdocker(バージョン19.03(現在は実験的))は、rootユーザーを使用して発生する可能性のある問題を無効にしてrootlessを実行できるようになります。昇格されたアクセス許可、ルート、および望まないときにマシンを開く可能性のあるものをいじることはもうありません。
[DockerCon 2019]からのこれに関するビデオRootlessモードでのDockerデーモンの強化
ルートレスDockerモードに関するいくつかの注意事項
Dockerエンジニアは、ルートレスモードをDockerエンジン機能の完全なスイートの代替と見なすことはできないと言います。ルートレスモードには次の制限があります。
- cgroupsリソース制御、apparmorセキュリティプロファイル、チェックポイント/復元、オーバーレイネットワークなどは、ルートレスモードでは機能しません。
- 現在、コンテナからポートを公開するには、手動のsocatヘルパープロセスが必要です。
- Ubuntuベースのディストリビューションのみが、ルートレスモードのオーバーレイファイルシステムをサポートしています。
- 現在、ルートレスモードは、以前ほど安定していないナイトリービルドに対してのみ提供されています。
docker 19.3の時点では、これは時代遅れです(必要以上に危険です):
ドッキングウィンドウのマニュアルは、これはそれについて言いたいことがあります。
非ルートアクセスの付与
Dockerデーモンは常にrootユーザーとして実行され、Dockerバージョン0.5.2以降、dockerデーモンはTCPポートではなくUnixソケットにバインドします。デフォルトでは、Unixソケットはユーザーrootによって所有されているため、デフォルトでは、sudoを使用してアクセスできます。
バージョン0.5.3から、ユーザー(またはDockerインストーラー)がdockerというUnixグループを作成し、それにユーザーを追加すると、Dockerデーモンは、デーモンの起動時にdockerグループがUnixソケットの所有権を読み取り/書き込み可能にします。Dockerデーモンは常にルートユーザーとして実行する必要がありますが、Dockerクライアントをdockerグループのユーザーとして実行する場合、すべてのクライアントコマンドにsudoを追加する必要はありません。0.9.0では、-Gオプションを使用して、docker以外のグループがUnixソケットを所有するように指定できます。
警告:Dockerグループ(または-Gで指定されたグループ)はルートと同等です。参照ドッカーデーモン攻撃面の詳細とで、このブログ投稿私たちは、root以外のユーザーは、CentOSの、Fedoraの、またはRHELにドッカーを実行させてはいけないのはなぜ(おかげでマイケル-n)を。
GitHubの実験的ルートレスモードの最近のリリースでは、エンジニアは、user_namespaces(7)、mount_namespaces(7)、network_namespaces(7)を使用して、権限のないユーザーとしてdockerdを実行できると述べています。
ユーザーは、dockerdの代わりにdockerd-rootless.shを実行する必要があります。
$ dockerd-rootless.sh --experimental
Rootlessモードは実験的であるため、ユーザーは常に-experimentalを指定してdockerd-rootless.shを実行する必要があります。
読むことが重要です:Linuxのインストール後の手順(Docker Daemon Attack Surfaceの詳細にもリンクしています)。
非ルートユーザーとしてDockerを管理する
dockerデーモンは、TCPポートではなくUnixソケットにバインドします。デフォルトでは、Unixソケットはユーザーrootによって所有され、他のユーザーはsudoを使用してのみアクセスできます。dockerデーモンは常にrootユーザーとして実行されます。
dockerコマンドを使用するときにsudoを使用したくない場合は、dockerというUnixグループを作成し、それにユーザーを追加します。dockerデーモンが起動すると、Unixソケットの所有権がdockerグループによって読み取り/書き込み可能になります。
まだ存在しない場合は、ドッカーグループを追加します。
sudo groupadd docker
接続ユーザー「$ USER」をdockerグループに追加します。現在のユーザーを使用しない場合は、優先ユーザーに一致するようにユーザー名を変更します。
sudo gpasswd -a $USER docker
行うnewgrp docker
か、ログアウト/ログインして、グループへの変更を有効にします。
使用できます
docker run hello-world
sudoなしでdockerを実行できるかどうかを確認します。