私が使うなら--user
パラメータをdocker run
使用すると、変更(単純な変更などmkdir
)がその(ルートではない)ユーザーによって実行されるように見えます。ただし、apt
root権限が必要なため、コンテナ内部などのコマンドを実行することはできません。デフォルトでは、sudo
Dockerdebian
イメージはプリインストールされていませんubuntu
。
この問題を解決するエレガントな方法は何ですか?
答え1
知っていたらいつそしてどこ変更が記録され、chown
後で次のファイルで使用できます。
- パラメータ(、、)を使用して、
id -u
ホスト(ルートではない)ユーザーのユーザーとグループIDをDockerコンテナに渡します。id -g
--env
- rootでコマンド/スクリプトを実行する(コンテナ内)
- 最後に
chown
(コンテナ内で)実行して、ホストユーザーが変更したように見えます。
答え2
これは特にエレガントな解決策ではないと思いますが、ユーザーとグループIDが(ルートではなく)ホストユーザーのIDと一致するコンテナ内にダミーユーザーを作成することは可能です。
- パラメータ(、、)を使用して、
id -u
ホスト(ルートではない)ユーザーのユーザーとグループIDをDockerコンテナに渡します。id -g
--env
ホスト(ルートではない)ユーザーのグループIDと一致する新しいグループを作成します。
addgroup --gid $DUMMY_GID dummy
ホスト(ルートではない)ユーザーのユーザーIDと一致する新しいユーザーを作成します。
adduser --uid $DUMMY_UID --gid $DUMMY_GID --disabled-password --gecos "" dummy
root権限を必要とするコマンドが機能します
他のコマンド/スクリプトの実行
runuser
runuser -u dummy -- command