任意のプロセスのマウントネームスペースを表示または操作する方法はありますか?
たとえば、実行中のDockerコンテナには、NFSサーバー用のローカルマウントがあります。コンテナの内部では見ることができますが、外部ではホストはこれについて何も知りません。ネットワーク名前空間の場合、これは機能します。例えば配管
ただし、マウントネームスペースの場合、これについては何も表示されません。これらのインストールを表示し、新しいインストールを操作または作成できる公開されたAPIまたはsysfsレイヤーはありますか?
ベストアンサー1
はい。あなたはそれを見たり、スイッチを/proc/$PID/mountinfo
使用することができます。それについて話す内容は次のとおりです。findmnt -N
findmnt --help
-N, --task <tid>
- 代替名前空間(
/proc/<tid>/mountinfo
ファイル)の使用
- 代替名前空間(
findmnt
PROPAGATION
また、この情報を正確に報告するフィールドであるフラグも追跡されますmountinfo
。これは、プロセスがどのインストールを共有するかを示します。
nsenter
また、正しい権限がある場合は、いつでも必要なすべての種類の名前空間を使用できます。
nsenter --help
Usage:
nsenter [options] <program> [args...]
Options:
-t, --target <pid> target process to get namespaces from
-m, --mount [=<file>] enter mount namespace
-u, --uts [=<file>] enter UTS namespace (hostname etc)
-i, --ipc [=<file>] enter System V IPC namespace
-n, --net [=<file>] enter network namespace
-p, --pid [=<file>] enter pid namespace
-U, --user [=<file>] enter user namespace
-S, --setuid <uid> set uid in user namespace
-G, --setgid <gid> set gid in user namespace
-r, --root [=<dir>] set the root directory
-w, --wd [=<dir>] set the working directory
-F, --no-fork do not fork before exec'ing <program>
-h, --help display this help and exit
-V, --version output version information and exit
For more details see nsenter(1).