2017-12-18 12 views
0

私は現在、Nvidiaの-ドッカーと公式Tensorflowドッカーコンテナ(GPU)を実行します。正式なTensorflow Docker Imageをroot以外のユーザーとして実行するには?

しかし、私は、デフォルトのユーザーを設定する方法を見つけることができませんコンテナこのコンテナのデフォルトのユーザーは "root"です。これは、セキュリティ面で危険で、共有フォルダにrootアクセスできるので危険です。

ホストマシンが "CNNareCute"のユーザーで実行されているとします。同じユーザーでコンテナを起動する方法はありますか?

答えて

1

デフォルトでDockerコンテナはrootとして実行されます。ドッカーの実行コマンドに--user <user>を渡すことで、ユーザーを無効にすることができます。ただし、コンテナプロセスがコンテナ内でルートアクセスを必要とする場合は、この問題が発生する可能性があります。

セキュリティ上の懸念は、User Namespacesを使用してドッカーで処理されます。 Usernamespacesは基本的にコンテナ内のユーザーをホスト上の別のユーザープールにマップします。したがって、コンテナ内のルートユーザーをホスト上の通常のユーザーにマップすることができ、セキュリティ上の懸念を緩和する必要があります。

+0

ユーザーネームスペースは私のニーズに完全に応えているようですが、 "root"を "CNNareCute"ユーザーにマップする方法はありますか? –

+1

https://success.docker.com/article/Introduction_to_User_Namespaces_in_Docker_Engineやhttps://www.jujens.eu/posts/en/2017/Jul/02/docker-userns-remap/のようなオンラインチュートリアルがたくさんあります。基本的に、再マップはその範囲で行われるので、 'cat/etc/passwd'を使ってユーザの' CNNareCute'のuidを見つけて '/ etc/subuid'の例の範囲の先頭に割り当てます:' USER::65536'のものです。そうすれば、コンテナ(root)内のユーザ0は、ホスト上の 'CNNareCute'ユーザにマップされます – yamenk

1

AFAIK、ドッカーイメージはデフォルトでrootとして実行されます。これは、イメージをベースとして使用するDockerファイルは、フックを飛ばして修正する必要がないことを意味します。あなたはDockerfileでユーザの変更を行うことができます - あなたが必要とする設定を与える他のlinuxボックスと同じ方法です。

コンテナ内のホストからユーザを(動的に)使用することはできません。最初はコンテナ内に作成することなく、同じ名前の別々のユーザになります。

コンテナに存在する場合、コマンドとsshを特定のユーザとしてコンテナに実行できます。たとえば、次のようにwww-data権限を保持するコマンドの実行を必要とするPHPアプリケーションは、実行されます:

docker exec --user www-data application_container_1 sh -c "php something"

だから、要するに、あなたが好きなユーザーの設定やスクリプトを実行するためにそれらを使用しますが、デフォルトすることができますあなたがそれを取り除かなければ、それは影響を与える可能性があります。

関連する問題